
    G8c                        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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' G d. d/      Z(d0 Z) G d1 d2      Z*d3 Z+d4 Z,d5 Z-d6 Z.d7 Z/e
j`                  jc                  d8d9      d:        Z2e
j`                  jc                  d;d<d=g ejf                  d>      g      d?        Z4e
j`                  jc                  d@g dA      ejj                  jm                  dB      dC               Z7dD Z8e
j`                  jc                  dE ejr                  dF        ejt                  dG      f      dH        Z;y)I    )nullcontextN)assert_almost_equalassert_array_equalc            
          e Zd Zdd ej                  g d      fdd ej                  g d      fdd ej                  g d	      fd
d ej
                  d      dz  fdd
 ej
                  dd      dz  fgZddd ej                  g d      fddd ej                  g d      fddg d ej                  g d      fgZej                  j                  de      d        Zej                  j                  de      d        Z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         -   <   zvmin, vmax, expectedc                 h    t        j                  d      }t        |j                  ||      |       y )Nr   nbinsmtickerMaxNLocatorr   tick_values)selfvminvmaxexpectedlocs        >/usr/lib/python3/dist-packages/matplotlib/tests/test_ticker.py
test_basiczTestMaxNLocator.test_basic   s'    !!*COOD$7B    zvmin, vmax, steps, expectedc                 l    t        j                  dd|      }t        |j                  ||      |       y )Nr   T)r'   integerstepsr(   )r,   r-   r.   r6   r/   r0   s         r1   test_integerzTestMaxNLocator.test_integer#   s+    !!4uECOOD$7Br3   )__name__
__module____qualname__nparrayarange
basic_datainteger_datapytestmarkparametrizer2   r7    r3   r1   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r3   r   c                       e Zd Zd Zd Zy)TestLinearLocatorc                     t        j                  d      }t        j                  g d      }t	        |j                  dd      |       y )N   numticks)皙333333ӿ皙?rJ   rL   )r)   LinearLocatorr;   r<   r   r+   r,   r0   
test_values      r1   r2   zTestLinearLocator.test_basic*   s6    ##Q/XX/0
COOD#6
Cr3   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   rH      )r   r   )rI   presetsN)r)   rM   
set_paramsrI   rR   r,   r0   s     r1   test_set_paramsz!TestLinearLocator.test_set_params/   sP    
 ##Q/FB<8||q   {{vrl***r3   N)r8   r9   r:   r2   rU   rC   r3   r1   rE   rE   )   s    D
+r3   rE   c                   $    e 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   rY   V-@go"@gV-)@r    )r)   MultipleLocatorr;   r<   r   r+   rN   s      r1   r2   zTestMultipleLocator.test_basic;   s:    %%51XX . /
COOB3Z@r3   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datarY   rZ   r   r   )r   r   Nmpl
rc_contextr)   r_   r   view_limitsrT   s     r1   test_view_limitsz$TestMultipleLocator.test_view_limitsA   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)	zb
        Test that everything works properly with 'round_numbers' for auto
        limit.
        ra   round_numbersrY   rZ      )r\   r]   Nrc   rT   s     r1   test_view_limits_round_numbersz2TestMultipleLocator.test_view_limits_round_numbersI   sT    
 ^^2ODE 	I))u5CA 6H	I 	I 	Irh   c                     t        j                  d      }|j                  d       |j                  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?rZ   g333333?N)r)   r_   rS   _edgestep)r,   mults     r1   rU   z#TestMultipleLocator.test_set_paramsR   s8    
 &&C0S!zz#%%%r3   N)r8   r9   r:   r2   rg   rm   rU   rC   r3   r1   rW   rW   :   s    AAI&r3   rW   c            	       N   e Zd Zd Zddg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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?ro   r   g333333??r   ?r   gffffff?g      ?g?g?Tminor)	pltsubplotsset_xlimminorticks_onr;   r<   r   xaxisget_ticklocs)r,   figaxrO   s       r1   r2   zTestAutoMinorLocator.test_basic]   s^    ,,.R
At
XX G H
 	BHH111=zJr3   r   r   )r   r   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_xticksr;   linspacer   r   set_minor_locatorr)   AutoMinorLocatorlenget_minorticklocs)r,   nb_majorticksexpected_nb_minorticksr   r   xlimss         r1   test_low_number_of_majorticksz2TestAutoMinorLocator.test_low_number_of_majorticksl   s     ,,.RU
bkk%(E!HmDE

""7#;#;#=>288--/04JJJJr3   ))r   r   )r   rl   )      @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)Nz_internal.classic_modeFr   )	rd   re   majorstep_minordivisionsr;   testingassert_allcloser)   AutoLocator_steps)r,   x
majorstepss      r1   "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          r1   test_number_of_minor_ticksz/TestAutoMinorLocator.test_number_of_minor_ticks   s     ,,.RJU
e

""7#;#;#=> !;!;!=>B!%????r3   ))r   rv   )r   gn?)r   ԍ;)r   gVs?=)gH׊gIhG|a)gv!>ҷ>)ʔA{v()g"s2_dglEՎfUrw   ){Gzt?{Gz?Q?g?gQ?gQ?g
ףp=
?rx   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        r1   test_additionalz$TestAutoMinorLocator.test_additional   sm    ,,.R

gsa0
gSA6
CBHH111=sCr3   N)r8   r9   r:   r2   paramsr@   rA   rB   r   r   r   r   limits	referencelistzipadditional_datar   rC   r3   r1   rt   rt   \   s    K 	F
 [[DfM	K N	K )E [[E57	@7	@>F	B		'	'	
	1	E	/I: 3vy12O[[Z9D :Dr3   rt   c                       e 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   rH   r     )h㈵>r   ry         $@     @@     j@g    cA    eAr   g     @r   rZ   )
r   r          @      @g       @g      0@g      @@g      P@g      `@g      p@r   r	   )	r)   
LogLocatorr@   raises
ValueErrorr+   r;   r<   r   rN   s      r1   r2   zTestLogLocator.test_basic   s      !,]]:& 	%OOAt$	% XX @ A
 	COOE59:F  a(XXNO
COOAs3Z@	% 	%s   CCc                    t        j                  d      }t        |j                  dd      g d       t        j                  t	        j
                  dd            }d|j                  d	d
      vsJ d|j                  d	d
      vsJ y )Nallsubsr{   r|   )g)\(?gq=
ףp?gQ?r   gp=
ף?gHzG?gQ?r   r    r   r}   r
   r   )r)   r   r   r+   r;   r=   rT   s     r1   test_switch_to_autolocatorz)TestLogLocator.test_switch_to_autolocator   sz      e,3??46D	F   bii2&67#//#s33333??34444r3   c                     t        j                         }|j                  dddgd       |j                  dk(  sJ |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],
        numdecs=4, numticks=15 and change it to something else.
        See if change was successful. Should not raise exception.
           rQ   r   rl   )rI   numdecsr   r[   N)r)   r   rS   rI   r   _baser   _subsrT   s     r1   rU   zTestLogLocator.test_set_params   st       "1C5qA||q   {{ayyA~~CII3%'''r3   N)r8   r9   r:   r2   r   rU   rC   r3   r1   r   r      s    A5(r3   r   c                       e Zd Zd Zy)TestNullLocatorc                     t        j                         }t        j                  t              5  |j                          ddd       y# 1 sw Y   yxY w)z
        Create null locator, and attempt to call set_params() on it.
        Should not exception, and should raise a warning.
        N)r)   NullLocatorr@   warnsUserWarningrS   rT   s     r1   rU   zTestNullLocator.test_set_params   s=    
 !!#\\+& 	NN	 	 	s   AANr8   r9   r:   rU   rC   r3   r1   r   r      s    r3   r   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)r;   iscloselog)r   r   s     r1   r   z_LogitHelper.isclose   sZ     q919Q 

BFF1Q3q5M>BFF1Q3q5M>: 	705	7r3   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   )r;   r<   r   r   r   )r   r   r   aylxlys         r1   r   z _LogitHelper.assert_almost_equal   s    XXa[XXa[vvb1f~"&&a.00vvb1f~"&&a.00ffQrT!Vn_ffQrT!Vn_B#r3   N)r8   r9   r:   staticmethodr   r   rC   r3   r1   r   r      s(    7 7 $ $r3   r   c                   ,   e Zd Zg dZdd ej
                  dd      z  z  dd ej
                  dd      z  z  dd ej
                  dd      z  z  dd ej
                  dd      z  z  dd ej
                  dd      z  z  dd ej
                  dd	      z  z  dd ej
                  dd
      z  z  dd ej
                  dd      z  z  gZg dZej                  j                  d eee            d        Zej                  j                  de      d        Zej                  j                  deez         d        Zej                  j                  d eee            d        Zd Zg d ej
                  dd      z  dd ej
                  dd      z  z
  Zej                  j                  d ej&                  ed      D  cg c]  \  }}||k7  r||f c}}}       d        Zej                  j                  de      d        Zyc c}}} w )TestLogitLocator)rx   r   )r   gףp=
?)gMb@?gCl?-C6
?gSt$?)gh㈵>g;?)gƠ>g?gHj>ge(?)g:0y5>g$P?r   r    rG   rl   r   r   r   rQ   	   ))皙?g333333?)rx   rL   )g?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)   LogitLocatorr   r   r+   )r,   limsexpected_low_ticksexpected_ticksr0   s        r1   test_basic_majorz!TestLogitLocator.test_basic_major  sX      A A#A-?)?A
 ""-((COOT"	
r3   r   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'   r6   )rl   rQ      N)r)   r   r*   rS   r+   shaper   )r,   r   r0   maxn_locr'   ticks
maxn_tickss          r1   test_maxn_majorz TestLogitLocator.test_maxn_major/  s     ""-&&SF 	/ENNN'e,#COOT*E---t4J;;*"2"2222Z',,...	/r3   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)
intr;   floorlog10r)   r   rangerS   r   r+   )r,   r   basic_neededr0   r'   s        r1   test_nbins_majorz!TestLogitLocator.test_nbins_major?  s     BHHRXXd1g%67781<q@""-<B/ 	<ENNN's-.%!);;;	<r3   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)	r   r   r)   r   r  rS   r+   r   r   )
r,   r   r   r   r  r0   	minor_locr'   major_ticksminor_tickss
             r1   
test_minorzTestLogitLocator.test_minorK  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r3   c                     t        j                  d      }|j                  rJ d|_        |j                  sJ |j                  d       |j                  rJ y )Nr	   r&   TFr   )r)   r   r   rS   rT   s     r1   test_minor_attrz TestLogitLocator.test_minor_attrh  sM    ""-99}	yyyU#99}9r3   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)   r   nonsingularr   )r,   r   r0   lims2s       r1   test_nonsingular_okz$TestLogitLocator.test_nonsingular_oku  s8     ""$&d|ve},,,r3   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)   r   r  )r,   r  r0   r-   r.   vmin2vmax2s          r1   test_nonsingular_nokz%TestLogitLocator.test_nonsingular_nok  s     ""$%dtT2u}}5 5     QdtT2u}}u q     r3   N)r8   r9   r:   ref_basic_limitsr;   r=   ref_basic_major_ticksref_maxn_limitsr@   rA   rB   r   r   r   r  r
  r  acceptable_vmin_vmax	itertoolsproductr  r  ).0abs   000r1   r   r     sm   	 	
R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q?"#	R9299Q##$	 GO[["34
	
 [[V_5/ 6/ [[V%5%GH	< I	< [["34J	J2
2q!
!
cYRYYr1%%
%
 [[ ,)++,@K	
 	
AAv F	
-- [[W&:;! <!!	
s   
Hr   c                       e Zd Zd Zy)TestFixedLocatorc                     t        j                  t        dd      d      }|j                  d       |j                  dk(  sJ y)z
        Create fixed locator with 5 nbins, and change it to something else.
        See if change was successful.
        Should not exception.
        r      r   r&   r   N)r)   FixedLocatorr  rS   r'   )r,   fixeds     r1   rU   z TestFixedLocator.test_set_params  s?     $$U1b\;q!{{ar3   Nr   rC   r3   r1   r"  r"    s     r3   r"  c                       e Zd Zd Zy)TestIndexLocatorc                     t        j                  dd      }|j                  dd       |j                  dk(  sJ |j                  dk(  sJ y)z
        Create index locator with 3 base, 4 offset. and change it to something
        else. See if change was successful.
        Should not exception.
        rG   rl   )r[   offsetr   N)r)   IndexLocatorrS   r   r*  )r,   indexs     r1   rU   z TestIndexLocator.test_set_params  sM     $$!A6a*{{a||q   r3   Nr   rC   r3   r1   r(  r(    s    	!r3   r(  c                       e 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   )r[   	linthreshr   rQ   )r   rI   N)r)   SymmetricalLogLocatorrS   r   rI   )r,   syms     r1   rU   z)TestSymmetricalLogLocator.test_set_params  sN     ++qASEA.yySE!!!||q   r3   Nr   rC   r3   r1   r.  r.    s    
!r3   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_widthrI   r    )r)   AsinhLocatorr7  rI   r[   r,   lctrs     r1   	test_initzTestAsinhLocator.test_init  sJ    ##D  E)))}}"""yyBr3   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   rl   )r   g      
@)r7  rI   	symthreshr[   r      rH   r   )r>  r   rZ   )r   g     @r   )r)   r8  rI   r>  r[   r   rS   r9  s     r1   rU   z TestAsinhLocator.test_set_params  s~   ##-/5)*> }}"""~~&&&yyA~~yyK'''$}}"""}}"""#&~~$$$$'~~$$$QyyA~~T"yyA~~Z(yyJ&&&T"yyJ&&&R yy   r3   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   r7  rI   r[   r   r   )\(?rL   r   ry   gB`"۹?g{Gz?g{Gzr   gMO?Mb`?r)   r8  r   r+   r;   r=   r9  s     r1   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;	=r3   c                     t        j                  ddd      }t        |j                  dd      g d       t        |j                  dd	      g d
       y )Nry   rA  r   rB  r	   )rH  r   r   皙ɿr   rL   r   r   r   r	   r   )rK  rH  rI  r  gٿr   r   rG   r   r	   r   r)   r8  r   r+   r9  s     r1   test_wide_valuesz!TestAsinhLocator.test_wide_values  sP    ##rJD,,T374	5 	D,,UD97	8r3   c                 p    t        j                  ddd      }t        |j                  dd      g d       y)	z<Check that manually injected zero will supersede nearby tickr	   rG   r   rB  gr}   )g      r   r}   NrL  r9  s     r1   test_near_zerozTestAsinhLocator.test_near_zero  s.    ##qqID,,T379IJr3   c                     t        j                  dd      }t        |j                  dd      t	        j
                  ddd             y )Nr   rA  rH   e   f   gq=
ףY@ry   rE  r9  s     r1   test_fallbackzTestAsinhLocator.test_fallback  s;    ##C"5D,,S#6IIc637	9r3   c                 (    G d d      }t        j                  dddd      }||_        d|_        t	         |       g d	       d
|_        t	         |       g d       d|_        t	         |       g d       d|_        t	         |       g d       y )Nc                        e Zd ZdZed        Zy)5TestAsinhLocator.test_symmetrizing.<locals>.DummyAxis)r   r   c                     | j                   S N)bounds)clss    r1   get_view_intervalzGTestAsinhLocator.test_symmetrizing.<locals>.DummyAxis.get_view_interval  s    /2zz(9r3   N)r8   r9   r:   rY  classmethodr[  rC   r3   r1   	DummyAxisrV    s    F9 9r3   r]  r   rG   r   r   )r7  rI   r>  r[   )r   r   )r   r   r   )r   r}   r   r   r   )g333333r~   )r   r   )r   r~   r   )r)   r8  axisrY  r   )r,   r]  r:  s      r1   test_symmetrizingz"TestAsinhLocator.test_symmetrizing  s~    	: 	:
 ##Q.2<	"	DFJ/$	DFJ/(	DFJ/#	DFN3r3   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   rQ   r    )r   rG   r   )r7  rI   r[   r   n   )iirH  iir   r  r         rK   r   r   ry   rz   r   r   rG   r   r    r"   2   r	   i,    r   r   rB  ii  )iiir   r   rJ  r   rL   r   r      }   iq  rL  )r,   lctr10lctr5s      r1   test_base_roundingz#TestAsinhLocator.test_base_rounding  sk    %%1q+-I?F..tS9A	B
 $$!bqIE--eT:6	7r3   N)r8   r9   r:   r;  rU   rF  rM  rO  rS  r`  rl  rC   r3   r1   r4  r4    s+    !>=8K94,7r3   r4  c                      e Zd Zg dZddgZddgZg dZddgddgd	d
gddgddggZg dZe	j                  j                  dddg      d        Ze	j                  j                  de      d        Ze	j                  j                  de      d        Ze	j                  j                  de      d        Zd Zd Ze	j                  j                  de      d        Ze	j                  j                  de      d        Ze	j                  j                  d e      d!        Ze	j                  j                  d e      d"        Zd# Zd$ Zy%)&TestScalarFormatter)){      r   )iCir   )i50  i=0  i40  )iii)g    i@g    j@順 )g    jg    i`y)g    hi@g    j@rq  )g    jg    hirr  )iO iQ iP )i+i+i+)r   r   r   )ro  ro  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     @rs  r   )Gz?rC  r   )g{G#@gQ$@r    )g(\X@gq=
ף Y@r	   )g(\@g
ףp=
@r   )g{G/@g(\0@r   )g!rhܿrh|?r   )grh|߿ru  r   )g3333@g    @@i0  )gffffgffff@r   TF)	)Fr   )r   r
   r   F)Tr   )rd  r   r   F)Trv  )rI  r    r   F)Trv  )rb  x   r   F)Trv  )irc  r   F)Trv  )gMbPrD  r  F)T)r^   r   )g   tAg   0Ar   T)Tr   g     jr   r   F)T)r   r   ry  r   Fr   z0.000g(0?z0.012grh|?z0.123gGz?z1.230g(@z12.300))ry   1e-1)r   z1.1e-1)g    חA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   )rd   rcParamsr   gcar   get_major_formatterformat_data_shortstrip)r,   unicode_minusresults      r1   test_unicode_minusz&TestScalarFormatter.test_unicode_minusj  sO     .;)*GGIOO//1CCBGMMO	r3   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 identicalmatch)r   r   r   r  r@   r   r   r   r   _update_ticksr*  )r,   leftrightr*  r   r   	formatters          r1   test_offset_valuez%TestScalarFormatter.test_offset_valuer  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   )rd   re   r)   ScalarFormatterget_useOffsetr*  )r,   r  tmp_forms      r1   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)rd   re   r)   r  get_useMathText)r,   r  r  s      r1   test_useMathTextz$TestScalarFormatter.test_useMathText  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     r1   test_set_use_offset_floatz-TestScalarFormatter.test_set_use_offset_float  sB    **,s#))+++#%%%r3   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   rG   r   )locale
localeconvCHAR_MAXr@   skiprd   re   r)   r  get_useLocalecreate_dummy_axisr_  set_data_intervalset_locs)r,   convsepr  s       r1   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 )Nrl   )r)   r  set_scientificset_powerlimitsr   r   r   set_major_formatterr   set_major_locatorr*   r  get_majorticklocsorderOfMagnitude)	r,   sci_type	scilimitsr   
orderOfMagfewticksr  r   r   s	            r1   test_scilimitsz"TestScalarFormatter.test_scilimits  s     **,)  +,,.R
$$X.SHH&&w':':1'=>"((4467X66666r3   zvalue, expectedc                 ~    dt         j                  d<   t        j                         }|j	                  |      |k(  sJ y )NFr  )rd   r  r)   r  format_data)r,   valuer/   sfs       r1   test_format_dataz$TestScalarFormatter.test_format_data  s6    -2)*$$&~~e$000r3   zdata, expectedc                     t        j                         \  }}|j                  dd       |j                  j	                         j
                  } ||      |k(  sJ y )Nr   r   )r   r   r   r   r  r  )r,   rb   r/   r   r   fmts         r1   test_cursor_precisionz)TestScalarFormatter.test_cursor_precision  sI    ,,.R
Bhh**,>>4yH$$$r3   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    r   )r)   r  r  r_  set_view_intervalr  get_tick_space
get_minpos)r,   rb   r/   r  r  s        r1   test_cursor_dummy_axisz*TestScalarFormatter.test_cursor_dummy_axis  s     $$&

!!!R(""4yH$$$ww%%'1,,,ww!!#q(((r3   c                 2   t         j                  j                  dddd       t        j                  t
        d      5  t        j                         \  }}|j                  g d       |j                  j                          d d d        y # 1 sw Y   y xY w)Nserifcmr10F)zfont.familyz
font.serifr  zcmr10 font should ideallyr  r^  )rd   r  updater@   r   r   r   r   r   canvasdraw)r,   r   r   s      r1   test_mathtext_ticksz'TestScalarFormatter.test_mathtext_ticks  sq    "!+0
 	 \\+-HI 	llnGCMM*%JJOO	 	 	s   ABBc                 h    t        j                         }|j                  g         |d      dk(  sJ y )Nr    )r)   r  r  )r,   r  s     r1   test_empty_locsz#TestScalarFormatter.test_empty_locs  s+    $$&
B#w"}}r3   N)r8   r9   r:   offset_datause_offset_datauseMathText_datascilimits_datacursor_datar  r@   rA   rB   r  r  r  r  r  r  r  r  r  r  r  r  rC   r3   r1   rn  rn  (  s   KB UmOe}
N 
W				xKK [[47GII [[2K@* A*  [[\?;( <( [[_.>?? @?
&( [[8.J7J7 [[.<1 =1
 [[-{;% <% [[-{;) <)
r3   rn  c                       e Zd ZdZddZd Zy)FakeAxiszAAllow Formatter to be called without having a "full" plot set up.c                      || _         || _        y rX  r-   r.   )r,   r-   r.   s      r1   __init__zFakeAxis.__init__  s    		r3   c                 2    | j                   | j                  fS rX  r  )r,   s    r1   r[  zFakeAxis.get_view_interval  s    yy$))##r3   N)r   r    )r8   r9   r:   __doc__r  r[  rC   r3   r1   r  r    s    K$r3   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)TestLogFormatterExponentTrl   r  r   )z-3z-2r}  0123Fr    ry   r   rL   rJ  gh㈵r   )0.1z1e-053.14z0.2z-0.2z-1e-05rf  )rG   r      *   dtype)r  51242r   g      @r   z2labelOnlyBase, exponent, locs, positions, expectedr[   c                    t        j                  ||      }t        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r[   labelOnlyBaser   -u   −)r)   LogFormatterExponentr  r_  r   replace)r,   r  r[   exponentlocs	positionsr/   r  valsr   poslabelslabels                r1   r2   z#TestLogFormatterExponent.test_basic  s    
 00d?LN	!!T8^4	Tz47i4HIC)As#IIFNOUEMM#'78OO!!! JOs    A=Bc                 j    t        j                  dd      }t               |_         |d      dk(  sJ y )Nr    Tr  g&$?r  )r)   r  r  r_  )r,   r  s     r1   
test_blankz#TestLogFormatterExponent.test_blank  s0    00bM	!	!R'''r3   N)r8   r9   r:   r;   r=   r<   pir  float
param_datae	base_datar@   rA   rB   r2   r  rC   r3   r1   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"(r3   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}}$)rG   r   z$\mathdefault{1}$)rG   r   z$\mathdefault{0.01}$)rG   r   z$\mathdefault{100}$)rG   r   z$\mathdefault{10^{-3}}$)rG   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)rd   re   r  )r,   min_exponentr  r/   s       r1   test_min_exponentz*TestLogFormatterMathtext.test_min_exponent  s?    ^^:LIJ 	/88E?h...	/ 	/ 	/s	   9AN)r8   r9   r:   r)   LogFormatterMathtextr  	test_datar@   rA   rB   r  rC   r3   r1   r   r   
  s@    
&'
&
&
(C	I [[<iH/ I/r3   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   333333?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    rq  z$\mathdefault{10^{5}}$)r    gh㈵>z$\mathdefault{2\times10^{-5}}$)r    r   z$\mathdefault{2\times10^{0}}$)r    i@ z$\mathdefault{2\times10^{5}}$)r    r   z$\mathdefault{5\times10^{-5}}$)r    r   z$\mathdefault{5\times10^{0}}$)r    i  z$\mathdefault{5\times10^{5}}$defaultzbase, value, expectedc                     t        j                  |      }h d|_        t        j                  ddi      5   ||      |k(  sJ 	 d d d        y # 1 sw Y   y xY w)NrZ   >   r
  r   r   r   text.usetexF)r)   LogFormatterSciNotationsublabelrd   re   )r,   r[   r  r/   r  s        r1   r2   z&TestLogFormatterSciNotation.test_basic1  sU     33>	+	^^]E23 	0U#x///	0 	0 	0s   AAN)r8   r9   r:   r  rd   stylecontextr@   rA   rB   r2   rC   r3   r1   r  r    sG    I& 	YYy![[4i@0 A "0r3   r  c                   2   e Zd Zg dZej
                  j                  de      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)ry   r   rz  )r   r   r  )r    r   10)r	   r   100)r   r   1000)'  r   1e4)rq  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)ry   r   r  )r   r   r  )r    r   r$  )r	   r   r%  )r   r   r&  )r'  r   10000)rq  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   r0  )r  r   r1  )r   r   r  )r   r   r  )r   r   r2  )r   r   r3  )ry   r   r  )r   r   r  )r    r   r$  )r	   r   r%  )r   r   r&  )r'  r   r4  )rq  r   r5  )r  r   r  )r  r   r  )r  r   r  )r  r   z0.03)r  r   z0.31)r  r   r  )r  r   z31.42)r  r   z314.16)r  r   z3141.59)r  r   z31415.93)r  r   z	314159.27)r   r   r  )r   r   r  )r   r   r  )r   r   r3  )ry   r   r  )r   r   r  )r    r   r$  )r	   r   r%  )r   r   r&  )r'  r   r4  )rq  r   r5  )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  )ry   r	   r  )r   r	   r  )r    r	   r$  )r	   r	   r%  )r   r	   r&  )r'  r	   r4  )rq  r	   r5  )r      .Az3.1e-5)r  r7  z3.1e-4)r  r7  z3.1e-3)r  r7  z3.1e-2)r  r7  z3.1e-1)r  r7  r6  )r  r7  z3.1e1)r  r7  z3.1e2)r  r7  z3.1e3)r  r7  z3.1e4)r  r7  z3.1e5)r   r7  r   )r   r7  r!  )r   r7  r"  )r   r7  r#  )ry   r7  rz  )r   r7  r  )r    r7  r$  )r	   r7  r%  )r   r7  r&  )r'  r7  r(  )rq  r7  r)  zvalue, domain, expectedc                 ^    t        j                         }|j                  ||      }||k(  sJ y rX  )r)   LogFormatter_pprint_val)r,   r  domainr/   r  r  s         r1   test_pprintzTestLogFormatter.test_pprint  s.    ""$v.   r3   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    r  N)get_minor_formatterr   r  r;   r  r  round)
r,   r_  r   r  minor_tlocscoefsclabel_expectedr   
label_tests
             r1   _sub_labelszTestLogFormatter._sub_labels  s    &&(,,.[!b288BHH[,A#BCC49:q%(d*::,78qc!fl8
8^+++ ;8s   $B>Br  c           	      $   t        j                         \  }}|j                  d       |j                  j	                  t        j                  dg              |j                  j                  t        j                  dt        j                  dd                   |j                  j                  t        j                  d             |j                  j                  t        j                  d             |j                  dd	       |j                  j                         }|j                  |j                  j!                                |j                  j!                         D cg c]  } ||      d
k7   }}t        j"                  |      sJ | j%                  |j                  g        |j                  dd       | j%                  |j                  g        |j                  dd       | j%                  |j                  g        |j                  dd       | j%                  |j                  g d       |j                  dd       | j%                  |j                  t        j                  ddt&                     y c c}w )Nr   r    )r[   r   r   T)r  Fr   g     @r  r   i   P   rQ   )r   rG   rl   r   r   r}   r  )r   r   
set_xscaler   r  r)   r   r   r;   r=   r  r9  set_minor_formatterr   r  r  r  r   rE  r   )r,   r   r   r  r   show_major_labelss         r1   test_sublabelzTestLogFormatter.test_sublabel  s    ,,.R
e
""7#5#52B#GH
""7#5#52;=99Q;K$M 	N
$$W%9%9%MN
$$W%9%9%NO
Ashh**,RXX//12&(hh&@&@&BD!" !Vr\ D Dvv'(((+ 	As+ 	Ar+ 	Aq5 	C		!Rs(CD-Ds   ,Jval)r   r    r	   r   c                 v    t        j                         }t               |_         ||      t	        |      k(  sJ y rX  )r)   r9  r  r_  strr,   rL  temp_lfs      r1   test_LogFormatter_callz'TestLogFormatter.test_LogFormatter_call  s1     &&(zs|s3x'''r3   )g       g       g       g       c                 Z    t        j                         }t               |_         ||       y rX  )r)   r9  r  r_  rO  s      r1   test_LogFormatter_call_tinyz,TestLogFormatter.test_LogFormatter_call_tiny  s"     &&(zr3   N)rC   )r8   r9   r:   pprint_datar@   rA   rB   r<  rE  rd   r  r  rK  rQ  rS  rC   r3   r1   r  r  :  s    EKN [[6D! E!
, 	YYy!#E "#EJ [[U$67( 8( [[U$FG Hr3   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)rer  r  r   r   )stringr  rX  mantissarZ  r  r[  r\  s           r1   logit_deformatterz$TestLogitFormatter.logit_deformatter  s      
 =,D/4V}uU6]+!H).v)B3uV}%DrTz)EV}f 9u9$CV
 eEl+U5=-AC::;;r3   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rX  )r@   r   r   rV  r`  r   r   )r,   fxr   r   s       r1   test_logit_deformaterz(TestLogitFormatter.test_logit_deformater)  se     9z* 9"44R89 9 #44R8A''1---	9 9s   A))A2r   r    r   r   c                     t        j                  d      }|j                  | j                          ||      }t        j                  |      }t        j                  ||      sJ y)zj
        Test the formatted value correspond to the value for ideal ticks in
        logit space.
        Fuse_overlineN)r)   LogitFormatterr  decade_testrV  r`  r   r   )r,   r   r  sx2s        r1   r2   zTestLogitFormatter.test_basicB  sW     **>	4++,aL11!4##Ar***r3   )r   re  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.
        Frf  r  N)r)   rh  r  ri  )r,   r   r  rj  s       r1   test_invalidzTestLogitFormatter.test_invalidN  s<     **>	4++,aLBwwr3   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.
        Frf  )	r    r   rf  r	      r   i  i  r'  r   r   r   N)r)   rh  r  rV  r`  )r,   r   r  Nsxsx1ds          r1   test_variablelengthz&TestLogitFormatter.test_variablelengthY  s    
 **>	@ 		%A1q5y1}""AAIq!a!e)#<=q\AE	*&88=(::2>?  1}q1u}$}$}		%r3   ))Tr   )rh  F)K   F)Tr   )ru  rv  T)Tr   )rh  Trw  )F)r   gRQ?gp=
ף?))r   Trx  rw  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)   r   r+   r;   r<   rh  set_minor_thresholdformat_ticksr   )r,   methodr   casesmin_locr   min_form	threshold	has_minor	formattedflabelleds               r1   test_minor_vs_majorz&TestLogitFormatter.test_minor_vs_majorq  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   rx   r   )r   rl   rQ   r   r   N)r)   r   rh  r+   set_minor_numberr{  r   )r,   r~  r  r   minor_numberr  r  r  s           r1   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
        rt  z$\mathdefault{1-10^{-2}}$z"$\mathdefault{\overline{10^{-2}}}$Frf  TN)r)   rh  rg  )r,   r   fx1fx2forms        r1   test_use_overlinez$TestLogitFormatter.test_use_overline  so     *3%%59Aw#~~$Aw#~~% Aw#~~r3   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)   rh  set_one_half)r,   r  s     r1   test_one_halfz TestLogitFormatter.test_one_half  sd     %%'c***% S	!!!*%T#Y&&&r3   rp  )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   )r;   r   r)   rh  r  
startswithr  abs)r,   rp  r  r  r   rc  rk  s          r1   test_format_data_shortz)TestLogitFormatter.test_format_data_short  s    {{1a#Ab)%%' 	'A''*B}}T"r!"v&2Yq2v;Q&&&	'r3   N)r8   r9   r:   r   r`  r@   rA   rB   rd  r   r  ri  r2   rm  r;   expr   rt  lims_minor_majorr  r  r  r  r  )r  is   00r1   rV  rV    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 rV  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     r1   r2   z!TestFormatStrFormatter.test_basic  s$    --f5(1+%%%r3   N)r8   r9   r:   r2   rC   r3   r1   r  r    s    &r3   r  c                   X    e Zd ZddgZej
                  j                  de      d        Zy)TestStrMethodFormatter)z{x:05d})r   r  )z{x:03d}-{pos:02d})r   r   z002-01zformat, input, expectedc                 B    t        j                  |      } || |k(  sJ y rX  )r)   StrMethodFormatter)r,   formatinputr/   r  s        r1   r2   z!TestStrMethodFormatter.test_basic  s$    ((0E{h&&&r3   N)r8   r9   r:   r  r@   rA   rB   r2   rC   r3   r1   r  r    s6    "/I
 [[6	B' C'r3   r  c                   X    e Zd Zg dZej
                  j                  de      d        Zy)TestEngFormatter))FEJ)z
-1.23457 k-1 kz-1.23 k)Tr  )u   −1.23457 k   −1 ku	   −1.23 k)FރB)z-1.23457r}  z-1.23)Tr  )u
   −1.23457r|  u   −1.23)F_c97ݚ)z
-123.457 mz-123 mz	-123.46 m)Tr  )u   −123.457 mu   −123 mu   −123.46 m)FQ^-':T)z
-1.23457 mz-1 mz-1.23 m)Tr  )u   −1.23457 mu   −1 mu	   −1.23 m)Tg       r  r  z0.00Tr   r  r  )Tgm>)u
   1.23457 µu   1 µu   1.23 µ)Tg_c97ݚ?)z	123.457 mz123 mz123.46 m)Try   )100 mr  z100.00 m)Tr   )r  r  z1.00)TgރB?)z1.23457r  z1.23)Tg33333?@)z999.91 kz999.90)Tg*:?@r  r  1.00 k)F*:?)r  r  z-1.00 k)Tr  )r  r  u	   −1.00 k)Tr   r  )Ti  )z1.001 kr  r  )Ti )z	100.001 kz100 kz100.00 k)TgZ$.A)z	987.654 kz988 kz987.65 k)TguˏE)1230 Yr  z	1230.00 Yz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  rj  
0123456789r   )placesr   c              3   F   K   | ]  }|d    v r|dz   z   n|z     ywr    NrC   )r  _sDIGITSUNITs     r1   	<genexpr>z/TestEngFormatter.test_params.<locals>.<genexpr>  s8      :*, +-R&F*:rCx$I& :s   !)unit)r  r  )r  u    z@_@c              3   f   K   | ](  }|d    v r|z   z   n|j                  d      z    * ywr  r  )r  r  r  r  _seps     r1   r  z/TestEngFormatter.test_params.<locals>.<genexpr>%  sE      /! 02"v/?29t+ "

3 5 <= /s   .1)r  r  )r  r  r  c              3   B   K   | ]  }|j                  d         yw)r  Nr  )r  r  r  s     r1   r  z/TestEngFormatter.test_params.<locals>.<genexpr>3  s     DR2::c40Ds   )r  )r  r  N)r   r  r)   EngFormatterr   )r,   r  r  r/   exp_outputs
formatters
_formatter_exp_outputr  r  r  s           @@@r1   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	8r3   N)r8   r9   r:   raw_format_datar@   rA   rB   r  rC   r3   r1   r  r    s3    #OJ [[=OD8 PD8r3   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   rg  r   T)usetex)useMathText)z$0$z$500$z$1$ k)r   r   plotr   r)   r  r   r  r  r  get_xticklabelsget_text)r   r   r  lablx_tick_label_texts        r1   $test_engformatter_usetex_useMathTextr  =  s    llnGCGGNN+MM.!**$7**t<> >	
$$Y/

9;9K9K9MNT]]_NN !$====> Os   7C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   %rx  r	   z120%)r	   r   r  r	   Z   z100%)r	   r   r  r  rf  z90%)r	   r   r  g333333(   z-2%)r	   r   r  g     V@r	   z90.0%)r	   r   r  gfffffT@r  z80.1%)r	   r   r  gQQ@rf  z70.2%)r	   r   r  gxFNr  z-60.6%)r	   Nr  _   r   z95.00%)r   Nr  rG   r   z300%)      1@Nr  r   g      !@z6%)r  Nr  r   g @z5.9%)r   Nr  rH  gư>z-2000.00000%)r   r   Nr
  r	   z120.00)rv  rG   r  rf  r	   z66.667)r  Nz
^^Foobar$$   r  z50.0^^Foobar$$)zdecimals=0, x>100%zdecimals=0, x=100%zdecimals=0, x<100%zdecimals=0, x<0%zdecimals=1, x>100%zdecimals=1, x=100%zdecimals=1, x<100%zdecimals=1, x<0%z$autodecimal, x<100%, display_range=1z7autodecimal, x>100%, display_range=6 (custom xmax test)z;autodecimal, x<100%, display_range=8.5 (autodecimal test 1)z;autodecimal, x<100%, display_range=8.4 (autodecimal test 2)z=autodecimal, x<-100%, display_range=1e-6 (tiny display range)zNone as percent symbolzEmpty percent symbolzCustom percent symbol))FF50\{t}%)FTz50\\\{t\}\%)TFr  )TTr  z2xmax, decimals, symbol, x, display_range, expected)idsc                     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)   PercentFormatterrd   re   
format_pct)r,   xmaxdecimalssymbolr   display_ranger/   r  s           r1   r2   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  rf  r	   r  )r,   r  r  r/   r  s        r1   
test_latexzTestPercentFormatter.test_latex  sS    &&hJ^^v67 	7>>"c*h666	7 	7 	7r  N)r8   r9   r:   percent_datapercent_ids
latex_datar@   rA   rB   r2   r  rC   r3   r1   r  r  K  sp    L.K,J [[@k  +F+F [[9:F7 G7r3   r  c                      t        j                         \  } }t        j                  t              5  |j
                  j                  t        j                                d d d        y # 1 sw Y   y xY wrX  )	r   r   r@   r   	TypeErrorr   r  r)   r   r   r   s     r1   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rX  )	r   r   r@   r   r  r   rI  r)   r   r  s     r1   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rX  )	r   r   r@   r   r  r   r  r)   r9  r  s     r1   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rX  )	r   r   r@   r   r  r   r   r)   r9  r  s     r1   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   re   add_subplotr   r   get_minor_ticksr   )xminoryminorr  r  r   r   s        r1   minorticksubplotz,test_minorticks_rc.<locals>.minorticksubplot  s    %+%+-^^r" 	*Aq)B	* BHH,,./!3>>>BHH,,./!3>>>		* 	*s   BBFr   Tr   rG   rl   )r   figure)r  r   s    @r1   test_minorticks_rcr    sE    
**,C? UE1%T5!$UD!$T4#r3   z%remove_overlapping_locs, expected_num))Tr   )Nr   )Fr   c                 0   t        j                  ddd      }t        j                  t        |            }t	        j
                         \  }}|j                  ||       |j                  j                  t        j                  j                                |j                  j                  t        j                  j                  d             |j                  j                  t        j                  j                  d             |j                  j!                  t        j                  j                  d             |j                  j#                  d       | | |j                  _        |j                  j$                  }||j                  j'                         k(  sJ t	        j(                  |j                  |	       |j                  j$                  }||j                  j$                  k(  sJ t        |j                  j+                               |k(  sJ t        |j                  j#                               |k(  sJ t        |j                  j-                               |k(  sJ t        |j                  j/                               |d
z  k(  sJ y )Nz
2018-11-03z
2018-11-06
datetime64r  z
%a)r   r   r     z%H:%Mr!   )remove_overlapping_locsr   )r;   r=   onesr   r   r   r  r   r  rd   dates
DayLocatorr  DateFormatterr   HourLocatorrI  r  r  get_remove_overlapping_locssetpr   get_minorticklabelsget_minorticklines)r  expected_numtr   r   r   currentnews           r1   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???r3   subhiaardvark)r   r   c                     t        j                         }t        j                  t              5  |j                  |        d d d        y # 1 sw Y   y xY w)Nr   )r)   r   r@   r   r   rS   )r  lls     r1   test_bad_locator_subsr    sA     
			B	z	"  
3     s   A

ArI   )r   r   rG   r   r  c           	         t        j                         }|j                  |        dD ]_  }|j                  d|      }t	        j
                  t	        j                  |j                  dd                  dk(  j                         r_J  y )NrH   )r   r   r   rA  r!   rf  r	   r   r   r      r   )r)   r   rS   r+   r;   diffr  r   )rI   r  topr   s       r1   test_small_range_loglocatorr!    su     
			BMM8M$/ Fr3'3!789Q>CCEEEFr3   c                      t        j                         }  | d      dk(  sJ | j                  d      dk(  sJ | j                  d      dk(  sJ y )Nr   r  )r)   NullFormatterr  r  r  s    r1   test_NullFormatterr%    sT    %%'IS>R  %+++&&s+r111r3   r  c                     d|  S )Nzval: rC   )r  s    r1   <lambda>r'    s    eA3K r3   )foobarc                 z    | j                         dk(  sJ | j                  d       | j                         dk(  sJ y )Nr  rd   )
get_offsetset_offset_stringr$  s    r1   test_set_offset_stringr-    s@     !R'''&!U***r3   )<
contextlibr   r  r  r]  numpyr;   numpy.testingr   r   r@   
matplotlibrd   matplotlib.pyplotpyplotr   matplotlib.tickertickerr)   r   rE   rW   rt   r   r   r   r   r"  r(  r.  r4  rn  r  r  r   r  r  rV  r  r  r  r  r  r  r  r  r  r  rA   rB   r  zerosr  r  r  r!  r%  FuncFormatterFixedFormatterr-  rC   r3   r1   <module>r9     sB   "   	  A    #C C4+ +"& &DdD dDN#( #(L $ $"O! O!d	  	 
! 
!! !g7 g7Ts sl$ $( (D/ /&0 0:J JZo' o'd& &	' 	'n8 n8b>B7 B7J;;;;$$ @&'@	'@B 	:BHHV!    \29F  3F2 G/0G>*', -+-+r3   