
    ^jd1                    ~   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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j\                  j_                  d0g d1      d2        Z0 G d3 d4      Z1d5 Z2d6 Z3d7 Z4d8 Z5d9 Z6d: Z7d; Z8d< Z9ej\                  j_                  d=d>      d?        Z:ej\                  j_                  d@dAdBg e
jv                  dC      g      dD        Z<ej\                  j_                  dEdFdGg dHfdIdGg dHfdJdGg dHfdKdGg dHfdFdLg dMfdIdLg dNfdJdLg dNfdKdLg dNfdFdOg dMfdIdOg dPfdJdOg dQfdKdOg dQfdFdRg dSfdIdRg dTfdJdRg dTfdKdRg dUfg      ejz                  j}                  dV      dW               Z?ejz                  j}                  dV      dX        Z@dY ZAej\                  j_                  dZ ej                  d[        ej                  d\      f      d]        ZDd^ ZEy)_    )nullcontextN)parse)assert_almost_equalassert_array_equalassert_allclosec            
       "   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        g/var/www/ramen.bs-engineer-server.com/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/   r0   r1   r9   r2   r3   s         r4   test_integerzTestMaxNLocator.test_integer%   s+    !!4uECOOD$7Br6   zkwargs, errortype, matchfooz5set_params() got an unexpected keyword argument 'foo'r9   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       r4   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)r9   )r,   r-   _stepsall)r/   r9   resultr3   s       r4   test_paddingzTestMaxNLocator.test_padding5   s/     !!.

f$))+++r6   )__name__
__module____qualname__nparrayarange
basic_datainteger_datarA   markparametrizer5   r:   	TypeErrorreescape
ValueErrorrE   rJ   r@   r6   r4   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	/ ,,r6   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_   ra   )r,   LinearLocatorrN   rO   r   r.   r/   r3   
test_values      r4   r5   zTestLinearLocator.test_basicA   s6    ##Q/XX/0
COOD#6
Cr6   c                 Z    t        j                  d      }|j                  dd      g k(   y )Nr   r]   r_   ra   )r,   rb   r.   r/   r3   s     r4   test_zero_numticksz$TestLinearLocator.test_zero_numticksF   s%    ##Q/c"b(r6   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,   rb   
set_paramsr^   rk   rf   s     r4   test_set_paramsz!TestLinearLocator.test_set_paramsJ   sP    
 ##Q/FB<8||q   {{vrl***r6   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   )rk   r   r   r   r          @r<   )r,   rb   r.   rN   linspacerH   rf   s     r4   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Er6   N)rK   rL   rM   r5   rg   rm   rt   r@   r6   r4   rZ   rZ   @   s    D
)+Fr6   rZ   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   rx   V-@go"@gV-)@r"   r,   MultipleLocatorrN   rO   r   r.   rc   s      r4   r5   zTestMultipleLocator.test_basic_   s:    %%51XX . /
COOB3Z@r6   c                     t        j                  dd      }t        j                  g d      }t	        |j                  dd      |       y )Nrx   333333?rz   offset)gZd{ gK7A`gx&r   gSc@g`"@gx&1H%@r}   r"   r~   rc   s      r4   test_basic_with_offsetz*TestMultipleLocator.test_basic_with_offsete   s<    %%5=XX ' (
COOB3Z@r6   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datarx   ry   r   r!   )r   r!   Nmpl
rc_contextr,   r   r   view_limitsrf   s     r4   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_numbersrx   ry      )r{   r|   Nr   rf   s     r4   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   rx   ?r   r   r   )g`"g}?5^@Nr   rf   s     r4   *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   rf   s     r4   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?ry   333333?r\   )r   N)r,   r   rl   _edgestep_offset)r/   mults     r4   rm   z#TestMultipleLocator.test_set_params   sX    
 &&C0S!zz#%%%q!||q   r6   N)
rK   rL   rM   r5   r   r   r   r   r   rm   r@   r6   r4   rv   rv   ^   s+    AAAIIE	!r6   rv   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?ro   r   g?Tminor)	pltsubplotsset_xlimminorticks_onrN   rO   r   xaxisget_ticklocsr/   figaxrd   s       r4   r5   zTestAutoMinorLocator.test_basic   s^    ,,.R
At
XX G H
 	BHH111=zJr6   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   ra   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,   AutoMinorLocatorrN   rO   r   r   r   s       r4   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Jr6   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_xticksrN   rs   r   r   r   r,   r   lenget_minorticklocs)r/   nb_majorticksexpected_nb_minorticksr   r   xlimss         r4   test_low_number_of_majorticksz2TestAutoMinorLocator.test_low_number_of_majorticks   s     ,,.RU
bkk%(E!HmDE

""7#;#;#=>288--/04JJJJr6   ))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_minordivisionsrN   testingr   r,   AutoLocatorrG   )r/   x
majorstepss      r4   "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          r4   test_number_of_minor_ticksz/TestAutoMinorLocator.test_number_of_minor_ticks   s     ,,.RJU
e

""7#;#;#=> !;!;!=>B!%????r6   )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        r4   test_additionalz$TestAutoMinorLocator.test_additional  sm    ,,.R

gsa0
gSA6
CBHH111=sCr6   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   contextrC   r   r   s           r4   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   rq   )r   r   r   ro   r    rp   r"   rj   )	r   ra   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   rC   r   r   s	            r4   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)rK   rL   rM   r5   paramsr   rA   rS   rT   r   r   r   r   limits	referencelistzipadditional_datar   r   r  r@   r6   r4   r   r      s   K 	F
K& [[DfM	K N	K )E [[E57	@7	@>F	B		'	'	
	1	E	/I: 3vy12O[[Z9D :D [[]UDM:[[GH "#	
	H	 ;H" [[]UDM:[[,-:;FG
H ;Hr6   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@    cAr   g     @r   ry   )	r   r   rr         @g       @g      0@g      @@g      P@g      `@r   r   )	r,   
LogLocatorrA   rB   rX   r.   rN   rO   r   rc   s      r4   r5   zTestLogLocator.test_basicJ  s      !,]]:& 	%OOAt$	% XXHI
COOE59:F  a(XXGH
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      r4   test_polar_axeszTestLogLocator.test_polar_axesV  sE     ,,<*ABR
e
As2==?O<r6   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 t        j                  d      }|j                  dd      }t        |d|k  |dk  z     dg       y )NrH   subsr   r   )g)\(?gq=
ףp?gQ?r   gp=
ף?gHzG?gQ?r   r"   r   r   r   r  r   r
   )r,   r  r   r.   rN   rP   )r/   r3   tvs      r4   test_switch_to_autolocatorz)TestLogLocator.test_switch_to_autolocator_  s      e,3??46D	F   bii2&67#//#s33333??34444  f-__R$2rRxB"H56=r6   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.
           rr   r   )r^   r  rz   N)r,   r  rl   r^   _baser  _subsrf   s     r4   rm   zTestLogLocator.test_set_paramsl  s`       "A6||q   yyA~~CII3%'''r6   c                     t        j                  d      }t        j                  g d      }t	        |j                  dd      |       y )Nr   r   r!   r  )r   ra   r   r   rr   r   r  r         I@r         i@     @@r       @@     @     @     @     j@r       jA    A    .A    >A    SAr      sA    ׇAr   r  )r,   r  rN   rO   r   r.   r/   llrd   s      r4   test_tick_values_correctz'TestLogLocator.test_tick_values_correctx  s<    Y/XX 7 8

 	BNN1c2J?r6   c                     dt         j                  d<   t        j                  d      }t	        j
                  g d      }t        |j                  dd      |       y )NFr   r&  r  )r   ra   r   r   rr   r   r  r   r'  r   r(  r)  r  r*  r+  r,  r-  r.  r  r/  r0  r1  r2  r3  r  r4  r5      חAg    קAg    eͽAr   r:  )r   rcParamsr,   r  rN   rO   r   r.   r6  s      r4   test_tick_values_not_emptyz)TestLogLocator.test_tick_values_not_empty  sM    16-.Y/XX O P

 	BNN1c2J?r6   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   )rN   randomdefault_rngnormalr   r   r   r  flattenhistr  rH   r  get_ylim)r/   rng
dummy_datar   axesr   r   s          r4   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	7r6   N)
rK   rL   rM   r5   r  r   rm   r8  r<  rM  r@   r6   r4   r	  r	  I  s(    
A=>
(@@7r6   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,   NullLocatorrA   warnsUserWarningrl   rf   s     r4   rm   zTestNullLocator.test_set_params  s=    
 !!#\\+& 	NN	 	 	s   AANrK   rL   rM   rm   r@   r6   r4   rO  rO    s    r6   rO  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)rN   iscloser  )r   r   s     r4   rX  z_LogitHelper.isclose  sZ     q919Q 

BFF1Q3q5M>BFF1Q3q5M>: 	705	7r6   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   )rN   rO   rH   r  r   )r   r   r   aylxlys         r4   r   z _LogitHelper.assert_almost_equal  s    XXa[XXa[vvb1f~"&&a.00vvb1f~"&&a.00ffQrT!Vn_ffQrT!Vn_B#r6   N)rK   rL   rM   staticmethodrX  r   r@   r6   r4   rV  rV    s(    7 7 $ $r6   rV  c                   D   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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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"  ri   	   ))r   r   )r   ra   )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,   LogitLocatorrV  r   r.   )r/   limsexpected_low_ticksexpected_ticksr3   s        r4   test_basic_majorz!TestLogitLocator.test_basic_major  sX      A A#A-?)?A
 ""-((COOT"	
r6   rh  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*   r9   )r   ri      N)r,   rg  r-   rl   r.   shaperH   )r/   rh  r3   maxn_locr*   ticks
maxn_tickss          r4   test_maxn_majorz TestLogitLocator.test_maxn_major  s     ""-&&SF 	/ENNN'e,#COOT*E---t4J;;*"2"2222Z',,...	/r6   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)
intrN   floorlog10r,   rg  rangerl   r   r.   )r/   rh  basic_neededr3   r*   s        r4   test_nbins_majorz!TestLogitLocator.test_nbins_major  s     BHHRXXd1g%67781<q@""-<B/ 	<ENNN's-.%!);;;	<r6   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)	rf  r   r,   rg  rw  rl   r.   rV  r   )
r/   rh  ri  rj  rx  r3   	minor_locr*   major_ticksminor_tickss
             r4   
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r6   c                     t        j                  d      }|j                  rJ d|_        |j                  sJ |j                  d       |j                  rJ y )Nr   r)   TFr   )r,   rg  r   rl   rf   s     r4   test_minor_attrz TestLogitLocator.test_minor_attr  sM    ""-99}	yyyU#99}9r6   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,   rg  nonsingularrf  )r/   rh  r3   lims2s       r4   test_nonsingular_okz$TestLogitLocator.test_nonsingular_ok%  s8     ""$&d|ve},,,r6   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,   rg  r  )r/   r  r3   r0   r1   vmin2vmax2s          r4   test_nonsingular_nokz%TestLogitLocator.test_nonsingular_nok6  s     ""$%dtT2u}}5 5     QdtT2u}}u q     r6   N)rK   rL   rM   ref_basic_limitsrN   rP   ref_basic_major_ticksref_maxn_limitsrA   rS   rT   r  r  rk  rr  ry  r~  r  acceptable_vmin_vmax	itertoolsproductr  r  ).0abs   000r4   r_  r_    sw   	 	
R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q##$	 GO[["S!#89:
	
 [[V_5/ 6/ [[V%5%GH	< I	< [["S!#89: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,   FixedLocatorrw  rl   r*   )r/   fixeds     r4   rm   z TestFixedLocator.test_set_paramsH  s?     $$U1b\;q!{{ar6   NrT  r@   r6   r4   r  r  G  s     r6   r  c                       e Zd 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,   IndexLocatorrl   r#  r   r/   indexs     r4   rm   z TestIndexLocator.test_set_paramsT  sM     $$!A6a*{{a||q   r6   c                 B   t        j                  dd      }t        |j                  dd      g d       t        j                  dd      }t        |j                  dd      g d       t        j                  dd      }t        |j                  dd	      g d
       y)zQ
        Test that tick_values does not return values greater than vmax.
        r   r   r   r   )r   r   r   r\   r   r   r   r   r!   )r   r   r   N)r,   r  r   r.   r  s     r4   #test_tick_values_not_exceeding_vmaxz4TestIndexLocator.test_tick_values_not_exceeding_vmax_  s    
 $$!A65,,Q2OD $$!C85,,Q24HI $$!A65,,Q2I>r6   N)rK   rL   rM   rm   r  r@   r6   r4   r  r  S  s    	!?r6   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   rz   	linthreshrr   ri   )r  r^   N)r,   SymmetricalLogLocatorrl   r$  r^   r/   syms     r4   rm   z)TestSymmetricalLogLocator.test_set_paramsq  sN     ++qASEA.yySE!!!||q   r6   r'   r   r   r   r   r   r   c                 p    t        j                  dd      }|j                  ||      }t        ||       y )Nr"   r   r  )r0   r1   )r,   r  r.   r   )r/   r0   r1   r2   r  rp  s         r4   test_valuesz%TestSymmetricalLogLocator.test_values}  s2     ++qAT55(+r6   c                     t        j                  ddddg      }|j                          |j                  j	                  dd       t         |       g d       y )Nr"   r   rr   r  )rz   r  r  )	ir   r   r   r   r
   (   )r,   r  create_dummy_axisaxisset_view_intervalr   r  s     r4   	test_subsz#TestSymmetricalLogLocator.test_subs  sG    ++qSzR""3+35"EFr6   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  ri   rd  r      r  )r   r   r  )r   r   )MbPr   )r,   r  r  r  r  rH   r   r  s     r4   test_extendingz(TestSymmetricalLogLocator.test_extending  s    ++qA""1a(###%%%""1b)#t$))+++r2&(222sC(J666q!$777r6   N)
rK   rL   rM   rm   rA   rS   rT   r  r  r  r@   r6   r4   r  r  p  sT    
! [["A1vQ
#,,G	8r6   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^   rz   r/   lctrs     r4   	test_initzTestAsinhLocator.test_init  sJ    ##D  E)))}}"""yyBr6   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^   	symthreshrz   r     r]   r   )r  r"  ry   )r   g     @r  )r,   r  r^   r  rz   r  rl   r  s     r4   rm   z TestAsinhLocator.test_set_params  s~   ##-/5)*> }}"""~~&&&yyA~~yyK'''$}}"""}}"""#&~~$$$$'~~$$$QyyA~~T"yyA~~Z(yyJ&&&T"yyJ&&&R yy   r6   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^   rz   r   r   )\(?ra   r   r   gB`"۹?{Gz?g{Gzr   gMO?Mb`?r,   r  r   r.   rN   rP   r  s     r4   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;	=r6   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   ra   r   r!   r
   r   r  )r  r  r  r  r   r   r   r\   r
   r   r  r,   r  r   r.   r  s     r4   test_wide_valuesz!TestAsinhLocator.test_wide_values  sP    ##rJD,,T374	5 	D,,UD97	8r6   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     r4   test_near_zerozTestAsinhLocator.test_near_zero  s.    ##qqID,,T379IJr6   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     r4   test_fallbackzTestAsinhLocator.test_fallback  s;    ##C"5D,,S#6IIc637	9r6   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  rz   r   r   )r   r   r   r   r  g333333r   r   )r   r   r   )r,   r  r  r  r  r   r  s     r4   test_symmetrizingz"TestAsinhLocator.test_symmetrizing  s    ##Q.2< 		##B*DFJ/		##B,DFJ/		##E40DFJ/		##As+DFN3r6   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   ri   r"   )r   r\   r!   )r  r^   rz   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   ra   r   r!      }   iq  r  )r/   lctr10lctr5s      r4   test_base_roundingz#TestAsinhLocator.test_base_rounding  sk    %%1q+-I?F..tS9A	B
 $$!bqIE--eT:6	7r6   N)rK   rL   rM   r  rm   r  r  r  r  r  r  r@   r6   r4   r  r    s+    !>=8K94"7r6   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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@rm  )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Ard  T)Tr   g     jr  r!   F)T)r   r   r  r   Fr   z0.000g(0?z0.012grh|?z0.123gGz?z1.230g(@z12.300))r   1e-1)r   z1.1e-1)r:  1e8)g    9Az1.1e8zunicode_minus, result)T   −1)F-1c                     |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_minusrI   s      r4   test_unicode_minusz&TestScalarFormatter.test_unicode_minusC  sO     .;)*GGIOO//1CCBGMMO	r6   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  rA   rR  rS  r   r   _update_ticksr   )r/   leftrightr   r   r   	formatters          r4   test_offset_valuez%TestScalarFormatter.test_offset_valueK  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      r4   test_use_offsetz#TestScalarFormatter.test_use_offset\  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      r4   test_useMathTextz$TestScalarFormatter.test_useMathTextc  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     r4   test_set_use_offset_floatz-TestScalarFormatter.test_set_use_offset_floati  sB    **,s#))+++#%%%r6   c                     t        j                         }|j                  d       |j                         sJ |j                  dk(  sJ |j                  d       |j                         rJ |j                  dk(  sJ y )NTr   Fr  r  s     r4   test_set_use_offset_boolz,TestScalarFormatter.test_set_use_offset_boolo  st    **,t$%%'''!###u%))+++!###r6   c                     t        j                         }|j                  d       |j                         rJ |j                  dk(  sJ y )Nr   r  r  s     r4   test_set_use_offset_intz+TestScalarFormatter.test_set_use_offset_inty  sB    **,q!))+++!###r6   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\   g    eA)locale
localeconvCHAR_MAXrA   skipr   r   r,   r  get_useLocaler  r  set_data_intervalset_locs)r/   convsepr  s       r4   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	            r4   test_scilimitsz"TestScalarFormatter.test_scilimits  s     **,)  +,,.R
$$X.SHH&&w':':1'=>"((4467X77777r6   zvalue, expectedc                 ~    dt         j                  d<   t        j                         }|j	                  |      |k(  sJ y )NFr  )r   r;  r,   r  format_data)r/   valuer2   sfs       r4   test_format_dataz$TestScalarFormatter.test_format_data  s6    -2)*$$&~~e$000r6   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   r2   r   r   fmts         r4   test_cursor_precisionz)TestScalarFormatter.test_cursor_precision  sI    ,,.R
Bhh**,>>4yH$$$r6   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"   rd  )r,   r  r  r  r  r  get_tick_space
get_minpos)r/   r   r2   r3  r6  s        r4   test_cursor_dummy_axisz*TestScalarFormatter.test_cursor_dummy_axis  s     $$&

!!!R(""4yH$$$ww%%'1,,,ww!!#q(((r6   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  ri   zcmr10 font should ideallyr>   r  z
Glyph 8722)r   r;  updateparse_versionrA   __version__r   rR  rS  r   r   r   canvasdrawr  s      r4   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)Nr>  cmT)r?  zmathtext.fontsetr  zmatplotlib.mathtext)loggergQr   r  r  )r  r   r   r  )r   r;  r@  at_levelloggingWARNINGr   r   plotr  r,   LogFormatterSciNotation
set_yticksmaprC  rD  text)r/   caplogr   r   yticksr  s         r4   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/   r3  s     r4   test_empty_locsz#TestScalarFormatter.test_empty_locs  s+    $$&
B#w"}}r6   N)rK   rL   rM   offset_datause_offset_datauseMathText_datascilimits_datacursor_datar1  rA   rS   rT   r  r  r	  r  r  r  r  r$  r/  r4  r7  r;  rE  rS  rV  r@   r6   r4   r  r    s   KB UmOe}
N 
W				xKK [[47GII [[2K@* A*  [[\?;( <( [[_.>?? @?
&$$( [[8.J8J8 [[.<1 =1
 [[-{;% <% [[-{;) <)"&#$r6   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  ra   r   gh㈵r   )0.1z1e-053.14z0.2z-0.2z-1e-05r  )r\   r!   r  *   dtype)ra  51242rr   r   r  z2labelOnlyBase, exponent, locs, positions, expectedrz   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rz   labelOnlyBaser   -u   −)r,   LogFormatterExponentr  r  r  r  replace)r/   rl  rz   exponentlocs	positionsr2   r  valsr   poslabelslabels                r4   r5   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"   Trk  r   g&$?rU  )r,   rn  r  r  r  )r/   r  s     r4   
test_blankz#TestLogFormatterExponent.test_blank  sG    00bM	##%((B/!R'''r6   N)rK   rL   rM   rN   rP   rO   pirw  float
param_datae	base_datarA   rS   rT   r5   rx  r@   r6   r4   r]  r]    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	"(r6   r]  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   r6  )r/   min_exponentr2  r2   s       r4   test_min_exponentz*TestLogFormatterMathtext.test_min_exponent  s?    ^^:LIJ 	/88E?h...	/ 	/ 	/s	   9AN)rK   rL   rM   r,   LogFormatterMathtextr6  	test_datarA   rS   rT   r  r@   r6   r4   r  r    s@    
&'
&
&
(C	I [[<iH/ I/r6   r  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   r  )r"   r  z$\mathdefault{10^{5}}$)r"   gh㈵>z$\mathdefault{2\times10^{-5}}$)r"   r   z$\mathdefault{2\times10^{0}}$)r"   i@ z$\mathdefault{2\times10^{5}}$)r"   rb  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)Nry   text.usetexF)r,   rM  r   r   )r/   rz   r2  r2   r  s        r4   r5   z&TestLogFormatterSciNotation.test_basic+  sM     33>	^^]E23 	0U#x///	0 	0 	0s   AAN)rK   rL   rM   r  r   styler   rA   rS   rT   r5   r@   r6   r4   r  r    sG    I& 	YYy![[4i@0 A "0r6   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   r_  )r"   r   10)r   r   100)r  r   1000)'  r   1e4)r  r   1e5)r  r   r^  )r  r   r^  )r  r   0.003)r  r   0.031)r  r   0.314)r  r   r  )r  r   31.416)r  r   314.159)r  r   3141.593)r  r   	31415.927)r  r   
314159.265)r  r   r^  )r   r   r^  )r   r   0.001)r   r   0.01)r   r   rb  )r   r   r_  )r"   r   r  )r   r   r  )r  r   r  )r  r   10000)r  r   100000)r  r   r^  )r  r   r^  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r  )r  r   r^  )r   r   r^  )r   r   r  )r   r   r  )r   r   rb  )r   r   r_  )r"   r   r  )r   r   r  )r  r   r  )r  r   r  )r  r   r  )r  r!   r^  )r  r!   r^  )r  r!   r^  )r  r!   z0.03)r  r!   z0.31)r  r!   rc  )r  r!   z31.42)r  r!   z314.16)r  r!   z3141.59)r  r!   z31415.93)r  r!   z	314159.27)r  r!   r^  )r   r!   r^  )r   r!   r^  )r   r!   r  )r   r!   rb  )r   r!   r_  )r"   r!   r  )r   r!   r  )r  r!   r  )r  r!   r  )r  r!   r  )r  r   r^  )r  r   r^  )r  r   r^  )r  r   r^  )r  r   z0.3)r  r   3.1)r  r   z31.4)r  r   z314.2)r  r   z3141.6)r  r   z31415.9)r  r   z314159.3)r  r   r^  )r   r   r^  )r   r   r^  )r   r   r^  )r   r   rb  )r   r   r_  )r"   r   r  )r   r   r  )r  r   r  )r  r   r  )r  r   r  )r  r1  z3.1e-5)r  r1  z3.1e-4)r  r1  z3.1e-3)r  r1  z3.1e-2)r  r1  z3.1e-1)r  r1  r  )r  r1  z3.1e1)r  r1  z3.1e2)r  r1  z3.1e3)r  r1  z3.1e4)r  r1  z3.1e5)r  r1  r  )r   r1  r  )r   r1  r  )r   r1  r  )r   r1  r  )r   r1  r_  )r"   r1  r  )r   r1  r  )r  r1  r  )r  r1  r  )r  r1  r  zvalue, domain, expectedc                 ^    t        j                         }|j                  ||      }||k(  sJ y N)r,   LogFormatter_pprint_val)r/   r2  domainr2   r6  rv  s         r4   test_pprintzTestLogFormatter.test_pprint  s.    ""$v.   r6   zvalue, long, short))r   r^  r^  )r   r^  r^  )r   z-10^0r  )g|=z2x10^-10z2e-10)g    _Bz10^10z1e+10c                     t        j                         \  }}|j                  d       |j                  j	                         }|j                  |      |k(  sJ |j                  |      |k(  sJ y )Nr  )r   r   
set_xscaler   r  r1  r  )r/   r2  longshortr   r   r6  s          r4   r4  z!TestLogFormatter.test_format_data  sa     ,,.R
ehh**,u%---$$U+u444r6   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"   rU  N)get_minor_formatterr   r!  rN   ru  rv  round)
r/   r  r  r6  minor_tlocscoefsclabel_expectedr   
label_tests
             r4   _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                  g d       |j                  dd       | j%                  |j                  t        j                  ddt&                     y c c}w )Nr  r"   )rz   r  r   T)rl  Fr   r,  rU  r  i   P   r   rd  )r   r\   r   r   ri   r   r   re  )r   r   r  r   r   r,   r  r   rN   rP   r(  r  set_minor_formatterr   r  r!  r)  rH   r  rt  )r/   r   r   r6  r   show_major_labelss         r4   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+ 	B5 	Aq5 	C		!Rs(CD7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      r4   test_LogFormatter_callz'TestLogFormatter.test_LogFormatter_call  sH     &&(!!#&&q"-s|s3x'''r6   )g       g       g       g       c                     t        j                         }|j                          |j                  j	                  dd        ||       y r  )r,   r  r  r  r  r  s      r4   test_LogFormatter_call_tinyz,TestLogFormatter.test_LogFormatter_call_tiny  s9     &&(!!#&&q"-r6   N)r@   )rK   rL   rM   pprint_datarA   rS   rT   r  r4  r  r   r  r   r  r  r  r@   r6   r4   r  r  3  s    EKN [[6D! E!
 [[1 4 55, 	YYy!(E "(ET [[U$67( 8( [[U$FG Hr6   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)rV   r?   rz  rt  rX   )stringr?   r  mantissar  r2  r  r  s           r4   logit_deformatterz$TestLogitFormatter.logit_deformatter  s      
 =,D/4V}uU6]+!H).v)B3uV}%DrTz)EV}f 9u9$CV
 eEl+U5=-AC::;;r6   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  )rA   rB   rX   r  r  rV  rX  )r/   fxr   r   s       r4   test_logit_deformaterz(TestLogitFormatter.test_logit_deformater7  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  rV  rX  )r/   r   r  sx2s        r4   r5   zTestLogitFormatter.test_basicP  sW     **>	4++,aL11!4##Ar***r6   )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  rU  N)r,   r  r!  r  )r/   r   r  r  s       r4   test_invalidzTestLogitFormatter.test_invalid\  s<     **>	4++,aLBwwr6   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    r  r   r   r   N)r,   r  r!  r  r  )r/   r   r  Nsxsx1ds          r4   test_variablelengthz&TestLogitFormatter.test_variablelengthg  s    
 **>	@ 		%A1q5y1}""AAIq!a!e)#<=q\AE	*&88=(::2>?  1}q1u}$}$}		%r6   ))Trc  )r  F)K   F)Tra  )r  r  T)Tr`  )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,   rg  r.   rN   rO   r  set_minor_thresholdformat_ticksr   )r/   methodrh  casesmin_locrp  min_form	threshold	has_minor	formattedflabelleds               r4   test_minor_vs_majorz&TestLogitFormatter.test_minor_vs_major  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   ri   rm  r   N)r,   rg  r  r.   set_minor_numberr  r   )r/   r  r  rp  minor_numberr  r  r  s           r4   test_minor_numberz$TestLogitFormatter.test_minor_number  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        r4   test_use_overlinez$TestLogitFormatter.test_use_overline  so     *3%%59Aw#~~$Aw#~~% Aw#~~r6   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     r4   test_one_halfz TestLogitFormatter.test_one_half  sd     %%'c***% S	!!!*%T#Y&&&r6   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   )rN   rs   r,   r  r  
startswithrz  abs)r/   r  rq  r  r   r  r  s          r4   test_format_data_shortz)TestLogitFormatter.test_format_data_short  s    {{1a#Ab)%%' 	'A''*B}}T"r!"v&2Yq2v;Q&&&	'r6   N)rK   rL   rM   r]  r  rA   rS   rT   r  rf  rw  r  r5   r  rN   exprs   r  lims_minor_majorr  r  r  r  r  )r  is   00r4   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     r4   r5   z!TestFormatStrFormatter.test_basic  s$    --f5(1+%%%r6   N)rK   rL   rM   r5   r@   r6   r4   r  r    s    &r6   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  r2   r6  s         r4   r5   z!TestStrMethodFormatter.test_basic  sK    ^^1=AB 	+,,V4C;(***	+ 	+ 	+s    AAN)rK   rL   rM   r  rA   rS   rT   r5   r@   r6   r4   r  r    s0    	I [[EyQ+ R+r6   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)Tr0  )u
   −1.23457r  u   −1.23)F_c97ݚ)z
-123.457 mz-123 mz	-123.46 m)Tr1  )u   −123.457 mu   −123 mu   −123.46 m)FQ^-':T)z
-1.23457 mz-1 mz-1.23 m)Tr2  )u   −1.23457 mu   −1 mu	   −1.23 m)Tg       r^  r^  z0.00Tr   r3  r4  )Tgm>)u
   1.23457 µu   1 µu   1.23 µ)Tg_c97ݚ?)z	123.457 mz123 mz123.46 m)Tr   )100 mr5  z100.00 m)Tr   )r_  r_  z1.00)TgރB?)z1.23457r_  z1.23)Tg33333?@)z999.91 kz999.90)Tg*:?@r6  r6  1.00 k)F*:?)r.  r.  z-1.00 k)Tr9  )r/  r/  u	   −1.00 k)Tr  r7  )Ti  )z1.001 kr6  r8  )Ti )z	100.001 kz100 kz100.00 k)TgZ$.A)z	987.654 kz988 kz987.65 k)TgCY,dRF)1230 Qr:  z	1230.00 Qzunicode_minus, input, expectedc                   	
 |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     r4   	<genexpr>z/TestEngFormatter.test_params.<locals>.<genexpr>*  s8      :*, +-R&F*:rCx$I& :s   !)unit)rE  r=  )rU  u    z@_@c              3   f   K   | ](  }|d    v r|z   z   n|j                  d      z    * ywr?  ro  )r  rA  rB  rC  _seps     r4   rD  z/TestEngFormatter.test_params.<locals>.<genexpr>:  sE      /! 02"v/?29t+ "

3 5 <= /s   .1)rE  r#  )rE  r=  r#  c              3   B   K   | ]  }|j                  d         yw)r@  NrG  )r  rA  rH  s     r4   rD  z/TestEngFormatter.test_params.<locals>.<genexpr>H  s     DR2::c40Ds   )r#  )r=  r#  N)r   r;  r,   EngFormatterr  )r/   r  r*  r2   exp_outputs
formatters
_formatter_exp_outputrB  rC  rH  s           @@@r4   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	8r6   N)rK   rL   rM   raw_format_datarA   rS   rT   rO  r@   r6   r4   r,  r,    s3    #OJ [[=OD8 PD8r6   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   rL  r   r,   rJ  r   r(  rC  rD  get_xticklabelsget_text)r   r   r  lablx_tick_label_texts        r4   $test_engformatter_usetex_useMathTextrX  R  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"   rd  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   rd  r\   )rY  gHz>r   i)rZ  r   r   r  )rY  r   r   r  )g    @@r  r   r\   )rY  r  r   r\   )rY  r  r   r\   )rY  r   r   r   )rY  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"  re  T)	useOffsetrE  _r   r   r   rU  r^  )r   r   rN   rP   rz  rL  r,   rJ  ENG_PREFIXESr   r(  rC  rD  
get_offsetget_yticklabelsrU  r   r   endswith)data_offsetnoiseoom_center_desiredoom_noise_desiredrC  r   r   ydatar  
offset_gotrV  	ticks_gotprefix_noise_gotprefix_noise_desiredprefix_center_gotprefix_center_desiredtick
prefix_idxs                     r4   test_engformatter_offset_oomrp  `  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   rs  r   Z   z100%)r   r   rs  rt  r  z90%)r   r   rs  r   r  z-2%)r   r   rs  g     V@r   z90.0%)r   r   rs  gfffffT@rt  z80.1%)r   r   rs  gQQ@r  z70.2%)r   r   rs  gxFNr  z-60.6%)r   Nrs  _   r   z95.00%)r   Nrs  r\   r   z300%)      1@Nrs  r   g      !@z6%)rv  Nrs  r   g @z5.9%)r!   Nrs  r  gư>z-2000.00000%)r   r   Nr   r   z120.00)r  r\   rU  r  r   z66.667)rd  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\}\%)TFrx  )TTrx  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_ranger2   r  s           r4   r5   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}%)r  is_latexr  r{  r  r   r}  )r/   r  rR  r2   r6  s        r4   
test_latexzTestPercentFormatter.test_latex  sS    &&hJ^^v67 	7>>"c*h666	7 	7 	7r  N)rK   rL   rM   percent_datapercent_ids
latex_datarA   rS   rT   r5   r  r@   r6   r4   rr  rr    sp    L.K,J [[@k  +F+F [[9:F7 G7r6   rr  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)rS  	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)rp  r6  r   s      r4   _impl_locale_commar    s    6 ##EE
"C,,S#6A((((
%C,,S#6A++++##FE
C,,S#6A:: << IJs   $B& &CCc                      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     r4   rD  z$test_locale_comma.<locals>.<genexpr>  s8      20 #g,-(..0 2s   79rU  )	r   r   subprocess_run_helperr  nextstdout
splitlinesrA   r  )procskip_msgs     r4   test_locale_commar    sj     ;;,,-?8De7L - ND 2!%!7!7!92 H H r6   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   rA   rB   rU   r   r(  r,   r  r   r   s     r4   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   rA   rB   rU   r   r  r,   r  r  s     r4   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   rA   rB   rU   r   r   r,   r  r  s     r4   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   rA   rB   rU   r   r   r,   r  r  s     r4   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.visibler{  r   r   )r   r   add_subplotr   r   get_minor_ticksr   )xminoryminorr  r|  r   r   s        r4   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    @r4   test_minorticks_rcr  %  sE    
**,C? UE1%T5!$UD!$T4#r6   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        r4   minortickstogglez0test_minorticks_toggle.<locals>.minortickstoggleB  s    __Q1%
e
ef&HH""$HH##%&HH##%HH""$fBHH,,./!3>>>BHH,,./!3>>>r6   )linearr  asinhlogitFr   Tr   r\   r   N)r   r  clearclose)r  scalesr  r   s      @r4   test_minorticks_toggler  7  sy     **,C?$ 1F ua0ueQ/eQ/tUA.		 IIcNr6   z%remove_overlapping_locs, expected_num))Tr   )Nr   )Frd  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
datetime64re  z
%a)r   r   r     z%H:%Mr#   )remove_overlapping_locsr   )rN   rP   onesr   r   r   rL  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           r4   test_remove_overlapr  _  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???r6   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  rA   rB   rX   rl   )r  r7  s     r4   test_bad_locator_subsr    sA     
			B	z	"  
3     s   A

Aznumticks, lims, ticksr   )r   r!   )r   r   r"   r   r\   rd  )r   r  )r   r"   r  )r   r   r"   r   )r   r  )r   r   r   r  )r   r   r"   r   r  )r   r  )r   r   r  )r   r   r  i@B )r   r   r"   r   r  r  r  c                     t        j                  |       }t        t        j                  j                        j
                  dk  rt         |j                  | |d       y t         |j                  | |       y )Nr]   r   gؗҬ<)rtol)	r,   r  rA  rN   versionr   r   r.   r   )r^   rh  rp  r7  s       r4   test_small_range_loglocatorr    s]    ( 
		X	.BRZZ''(..2-u5A>2>>40%8r6   c                     d} d}t        j                  t        d| dz         t        j                  t        |      d            D ]&  \  }\  }}t	        j
                  |      }t        j                  |j                  d|z  d|z              j                         j                  t              }t        |      |dz   k  sJ |d   |cxk  r	|d   k  sJ  J |d   |cxk  r	|d	   k  sJ  J h t        j                  |      \  }||z  dk(  j                         rt        d|      D ]=  }t        ||z   |dz   |      }	t        |	      t        |      k  r.t        |	      |kD  r=J  ) y )
Nri   r
   r   r   r]   r"   r   r  r   )r  r  rw  combinationsr,   r  rN   rv  r.   r  astypert  r   diffrH   )
max_numtickspow_endr^   lor  r7  decadesstrider   alt_decadess
             r4   test_loglocator_propertiesr    ss    LG'//!\A%&	(>(>uW~q(QS V(2r2((2>>"b&"b&9:@@BII#N 7|x!|+++qzB,'!*,,,,,r{b.72;.....%BGGG$%& A%**,  6* V#BKa@;'#g,6#k:JX:UUUVVr6   c                      t        j                         }  | d      dk(  sJ | j                  d      dk(  sJ | j                  d      dk(  sJ y )Nr   rU  )r,   NullFormatterr1  r  r  s    r4   test_NullFormatterr    sT    %%'IS>R  %+++&&s+r111r6   r  c                     d|  S )Nzval: r@   )r  s    r4   <lambda>r    s    eA3K r6   )r;   barc                 z    | j                         dk(  sJ | j                  d       | j                         dk(  sJ y )NrU  r   )r`  set_offset_stringr  s    r4   test_set_offset_stringr    s@     !R'''&!U***r6   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   )rr  r   r   )whichr   N)r   r   boxplotrN   rP   r   r   draw_without_renderingget_xgridlines
isinstancer   get_minor_locatorr   tickerr   r  s     r4   test_minorticks_on_multi_figr    s     llnGCJJryy}J,JJryy}J,JJryy}J,GG'GGG'G bhh002CJJ4O4OPPPr6   )F
contextlibr   r  r  rJ  rV   packaging.versionr   rA  numpyrN   numpy.testingr   r   r   rA   
matplotlibr   matplotlib.pyplotpyplotr   matplotlib.tickerr  r,   r	   rZ   rv   r   r	  rO  rV  r_  r  r  r  r  r  r]  r  r  r  r  r  r  r,  rX  rS   rT   rp  rr  r  r  r  r  r  r  r  r  r  zerosr  r  r   r  r  r  FuncFormatterFixedFormatterr  r  r@   r6   r4   <module>r     s_   "    	 4  R R    #,, ,,^F F<8! 8!vmH mH`M7 M7` $ $"O! O!d	  	 ? ?:)8 )8Xb7 b7J\ \~!( !(H/ /&0 08_ _Do' o'd& &+ +&n8 n8b> ? B0(L10(LVB7 B7J* ;;;;$$%P @&'@	'@B 	:BHHV!    0/""#"#"#	?#	()	*+	*+
&'
/0
/0
34!3 $ 99 %&9 9V V22 G/0G>*', -+-+Qr6   