
    Ng7                       d dl mZ d dlZd dlZd dlZd dlZd dlmZ d dl	Z
d dlmZmZ d dlZd dlZd dlmZ d dlmZ  G d d          Z G d d          Z G d	 d
          Z G d d          Z G d d          Z G d d          Z G d d          Z G d d          Z G d d          Z G d d          Z  G d d          Z! G d d          Z" G d d          Z# G d d           Z$ G d! d"          Z% G d# d$          Z& G d% d&          Z' G d' d(          Z( G d) d*          Z) G d+ d,          Z* G d- d.          Z+d/ Z, G d0 d1          Z-d2 Z.d3 Z/d4 Z0d5 Z1d6 Z2d7 Z3d8 Z4d9 Z5ej6        7                    d:d;          d<             Z8ej6        7                    d=d>d?g e
j9        d@          g          dA             Z:ej6        7                    dBg dC          ej;        <                    dD          dE                         Z=dF Z>ej6        7                    dG ej?        dH            ej@        dI          f          dJ             ZAdK ZBdS )L    )nullcontextN)parse)assert_almost_equalassert_array_equalc            
          e Zd Zdd ej        g d          fdd ej        g d          fdd ej        g d	          fd
d ej        d          dz  fdd
 ej        dd          dz  fgZddd ej        g d          fddd ej        g d          fddg d ej        g d          fgZej	        
                    de          d             Zej	        
                    de          d             Ze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	        
                    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dS )*TestMaxNLocator   d   )      4@      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                 x    t          j        d          }t          |                    ||          |           d S )Nr!   nbinsmtickerMaxNLocatorr   tick_values)selfvminvmaxexpectedlocs        X/var/www/html/ai-engine/env/lib/python3.11/site-packages/matplotlib/tests/test_ticker.py
test_basiczTestMaxNLocator.test_basic    s9    !***COOD$77BBBBB    zvmin, vmax, steps, expectedc                 |    t          j        dd|          }t          |                    ||          |           d S )Nr!   T)r*   integerstepsr+   )r/   r0   r1   r9   r2   r3   s         r4   test_integerzTestMaxNLocator.test_integer%   s=    !4uEEECOOD$77BBBB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            d S # 1 swxY w Y   d S )Nmatch )pytestraisesr,   r-   )r/   kwargs	errortyper?   s       r4   test_errorszTestMaxNLocator.test_errors*   s     ]9E222 	* 	*))&)))	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	*s   6::zsteps, result)r   r   r"   r"   c                 n    t          j        |          }|j        |k                                    sJ d S )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55667	!L!L!LMMN	hbhJJJKKL	
HibillU*+	AyryQ''%/0J 
sD("(===112	tT828$D$D$DEEF	
B"""HBH-@-@-@$A$ABL [3Z@@C C A@C [:LIIC C JIC [7
Y	J	K	K	M
Aq6	J(NO
1z#IJ
Ar7	Z)OP:  * * * [_	ZZZ 
R***
Q
jjj	/  , , , , ,r6   r   c                   &    e Zd Zd Zd Zd Zd ZdS )TestLinearLocatorc                     t          j        d          }t          j        g d          }t	          |                    dd          |           d S )N   numticks)皙333333ӿ皙?r_   ra   )r,   LinearLocatorrN   rO   r   r.   r/   r3   
test_values      r4   r5   zTestLinearLocator.test_basicA   sO    #Q///X///00
COOD#66
CCCCCr6   c                 d    t          j        d          }|                    dd          g k     d S )Nr   r]   r_   ra   )r,   rb   r.   r/   r3   s     r4   test_zero_numticksz$TestLinearLocator.test_zero_numticksF   s4    #Q///c""b((((r6   c                     t          j        d          }|                    ddg i           |j        dk    sJ |j        dg ik    sJ dS )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   sa    
 #Q///FB<888|q    {vrl******r6   c                    t          j        g dddgd          }|                    dd          g dk    sJ |                    dd          g dk    sJ |                    dd          ddgk    sJ |                    d	d
          ddgk    sJ |                    dd          t          j        ddd          k                                    sJ d S )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 -A B B Bq!$$7777q!$$7777q!$$c
2222sC((S#J66661%%Q2)>)>>CCEEEEEEEr6   N)rK   rL   rM   r5   rg   rm   rt   r@   r6   r4   rZ   rZ   @   sX        D D D
) ) )+ + +F F F F Fr6   rZ   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestMultipleLocatorc                     t          j        d          }t          j        g d          }t	          |                    dd          |           d S )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_   sY    %5111X . . . / /
COOB33Z@@@@@r6   c                     t          j        dd          }t          j        g d          }t	          |                    dd          |           d S )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===X ' ' ' ( (
COOB33Z@@@@@r6   c                     t          j        ddi          5  t          j        d          }t	          |                    dd          d           ddd           dS # 1 swxY w Y   dS )	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   s     ^2F;<< 	A 	A)u555CA 6 6@@@	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A 	A   :AA"%A"c                     t          j        ddi          5  t          j        d          }t	          |                    dd          d           ddd           dS # 1 swxY w Y   dS )	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   s    
 ^2ODEE 	I 	I)u555CA 6 6HHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Ir   c                     t          j        ddi          5  t          j        dd          }t	          |                    dd          d           d	d	d	           d	S # 1 swxY w Y   d	S )
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|   s    
 ^2ODEE 	I 	I)uSAAACA 6 6HHH	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	I 	Is   ;AA#&A#c                     t          j        ddi          5  t          j        d          }t	          |                    dd          d           ddd           dS # 1 swxY w Y   dS )	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   s     ^2ODEE 	E 	E%A...Cc : :GDDD	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Er   c                     t          j        d          }|                    d           |j        j        dk    sJ |                    d           |j        dk    sJ dS )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   sm    
 &C000S!!!z#%%%%q!!!|q      r6   N)
rK   rL   rM   r5   r   r   r   r   r   rm   r@   r6   r4   rv   rv   ^   s        A A AA A AA A AI I II I IE E E	! 	! 	! 	! 	!r6   rv   c            
          e Zd Zd ZddgZd Zej                            de          d             Z	g dZ
d Ze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                            de          d             Zej                            dddg          ej                            ddg dfdg dfg          d                         Zej                            dddg          ej                            dddg dfd d!g d"fd#d$g d%fg          d&                         Zd'S )(TestAutoMinorLocatorc                    t          j                    \  }}|                    dd           |                                 t	          j        g d          }t          |j                            d          |           d S )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
X G G G H H
 	BH111==zJJJJJr6   r   r   )r   r   c                    t          j                    \  }}|                    dd           |j                            t          j                               t          j        g d          }t          |j        
                    d          |           |                    dd           t          j        g d          }t          |j        
                    d          |           d	S )
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#;#=#=>>>X B B B C C
 	BH111==zJJJ
BX G G G H H
BH111==zJJJJJr6   z%nb_majorticks, expected_nb_minorticksc                    t          j                    \  }}d} |j        |  |                    t	          j        |d         |d         |                     |                                 |j                            t          j
                               t          |j                                                  |k    sJ d S )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
bk%(E!HmDDEEE

""7#;#=#=>>>28--//004JJJJJJJr6   ))r   r!   )r   r   )r   r!   )r!   r!   )r"   r!   c                     t          j        ddi          5  d | j        D             }t          j                            |t          j                    j                   d d d            d S # 1 swxY w Y   d S )N_internal.classic_modeFc                     g | ]
}|d          S r   r@   ).0xs     r4   
<listcomp>zKTestAutoMinorLocator.test_using_all_default_major_steps.<locals>.<listcomp>   s    FFF1!A$FFFr6   )	r   r   majorstep_minordivisionsrN   testingassert_allcloser,   AutoLocatorrG   )r/   
majorstepss     r4   "test_using_all_default_major_stepsz7TestAutoMinorLocator.test_using_all_default_major_steps   s    ^5u=>> 	E 	EFF(EFFFJJ&&z'.':'<'<'CE E E	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	E 	Es   AA,,A03A0z&major_step, expected_nb_minordivisionsc                 X   t          j                    \  }}d|f} |j        |  |                    |           |                                 |j                            t          j                               t          |j        
                                          dz   }||k    sJ d S 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                    \  }}|                                 |                    dddd           |                    dddd           |                    |           t          |j                            d	          |           d S )
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  s    ,..R

gsa000
gSA666
CBH111==sCCCCCr6   use_rcparamFTr   r   c                    |rddd}i }ni }ddi}t          j        |          5  t          j                    \  }} |j        |   |j        |  |j                            t          j	        di |           |j
                            t          j	        di |           t          |j                            d          |           t          |j
                            d          |           d d d            d S # 1 swxY w Y   d S )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  sw     	#,2PPGFFG6]F^G$$ 	H 	HlnnGCBKBKH&&w'?'I'I&'I'IJJJH&&w'?'I'I&'I'IJJJ 5 5D 5 A A3GGG 5 5D 5 A A3GGG	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	H 	Hs   CD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                            t          j	        d                     |j        
                    t          j        di |           |j                            t          j	        d                     |j        
                    t          j        di |           t          |j                            d          |           t          |j                            d          |           d d d            d S # 1 swxY w Y   d S )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FFGFFG1XF^G$$ 		H 		HlnnGCBKBKH&&w'>q'A'ABBBH&&w'?'I'I&'I'IJJJH&&w'>q'A'ABBBH&&w'?'I'I&'I'IJJJ 5 5D 5 A A3GGG 5 5D 5 A A3GGG		H 		H 		H 		H 		H 		H 		H 		H 		H 		H 		H 		H 		H 		H 		H 		H 		H 		Hs   D'EE E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 K K 	F
K K K& [DfMM	K 	K NM	K )  )  )E E E [E57 7	@ 	@7 7	@> > >F	B 	B 	B	 	 		' 	' 	'	' 	' 	'	 	 	
	1 	1 	1	E 	E 	E	 	 	/I: d33vy1122O[Z99D D :9D []UDM::[G G GH " " "#	
	 	H H	 	 ;:H" []UDM::[,,,-:::;FFFG
 H H  ;:H H Hr6   r   c                   8    e Zd Zd Zd Zd Zd Zd Zd Zd Z	dS )	TestLogLocatorc                    t          j        d          }t          j        t                    5  |                    dd           d d d            n# 1 swxY w Y   t          j        g d          }t          |                    dd          |           t          j        d	          }t          j        g d
          }t          |                    dd          |           d S )Nr!   r]   r     )h㈵>r   r         $@     @@     j@    cA    eAr   g     @r   ry   )
r   r   rr         @g       @g      0@g      @@g      P@g      `@g      p@r   r
   )	r,   
LogLocatorrA   rB   rX   r.   rN   rO   r   rc   s      r4   r5   zTestLogLocator.test_basicJ  s"    !,,,]:&& 	% 	%OOAt$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% X @ @ @ A A
 	COOE599:FFF a(((XNNNOO
COOAs33Z@@@@@s   AAAc                     t          j        ddi          \  }}|                    d           |                    dd           t	          |                                g d           dS )	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_axesX  sg     ,<*ABBBR
e
As2==??OOO<<<<<r6   c                 4   t          j        d          }t          |                    dd          g d           t          j        t	          j        dd                    }d|                    d	d
          vsJ d|                    d	d
          vsJ d S )NrH   subsr   r   )g)\(?gq=
ףp?gQ?r   gp=
ף?gHzG?gQ?r   r"   r   r   r   r  )r,   r  r   r.   rN   rP   rf   s     r4   test_switch_to_autolocatorz)TestLogLocator.test_switch_to_autolocatora  s     e,,,3??466DDD	F 	F 	F  bi2&6&6777#//#s3333333??344444444r6   c                    t          j                    }t          j        t          j        d          5  |                    dddgd           ddd           n# 1 swxY w Y   |j        dk    sJ t          j        t          j        d          5  |j        dk    sJ 	 ddd           n# 1 swxY w Y   |j	        dk    sJ t          |j                  dgk    sJ dS )	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.
        numdecsr>      ri   rr   r   )r^   r&  r#  rz   N)r,   r  rA   warnsr   MatplotlibDeprecationWarningrl   r^   r&  _baser	  _subsrf   s     r4   rm   zTestLogLocator.test_set_paramsj  sr     ""\#:)LLL 	F 	FNNAqu1NEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F|q    \#:)LLL 	$ 	$;!#####	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$yA~~~~CI3%''''''s#   AA"AB..B25B2c                     t          j        d          }t          j        g d          }t	          |                    dd          |           d S )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    ׇA    חA    קA    eͽAr   r  )r,   r  rN   rO   r   r.   r/   llrd   s      r4   test_tick_values_correctz'TestLogLocator.test_tick_values_correcty  s`    Y///X O O O P P

 	BNN1c22J?????r6   c                     dt           j        d<   t          j        d          }t	          j        g d          }t          |                    dd          |           d S )NFr   r-  r"  )!r   ra   r   r   rr   r   r  r   r.  r   r/  r0  r  r1  r2  r3  r4  r5  r  r6  r7  r8  r9  r:  r  r;  r<  r=  r>  r?  r  g    eAg    _Ar   r=  )r   rcParamsr,   r  rN   rO   r   r.   r@  s      r4   test_tick_values_not_emptyz)TestLogLocator.test_tick_values_not_empty  sh    16-.Y///X 7 7 7 8 8
 	BNN1c22J?????r6   c                    t           j                            d          }|                    d          g g g}t	          j        t          |          dd          \  }}t          |                                |          D ]3\  }}|	                    |d           |
                    dd	
           4|                                D ]s}t          |                                |d                                         k              sJ |                                |d                                         k    sJ td S )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#   i##H--jjcj**B3
LZdKKK	TDLLNNJ77 	5 	5HBGGDrG"""MM%VM4444,,.. 	7 	7Br}}$q'*<*<*>*>>?????;;==DG$4$4$6$666666	7 	7r6   N)
rK   rL   rM   r5   r   r$  rm   rB  rE  rV  r@   r6   r4   r  r  I  s        A A A= = =5 5 5( ( (@ @ @	@ 	@ 	@7 7 7 7 7r6   r  c                       e Zd Zd ZdS )TestNullLocatorc                     t          j                    }t          j        t                    5  |                                 ddd           dS # 1 swxY w Y   dS )z
        Create null locator, and attempt to call set_params() on it.
        Should not exception, and should raise a warning.
        N)r,   NullLocatorrA   r(  UserWarningrl   rf   s     r4   rm   zTestNullLocator.test_set_params  s    
 !##\+&& 	 	NN	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	s   AAANrK   rL   rM   rm   r@   r6   r4   rX  rX    s#            r6   rX  c                   :    e Zd Zed             Zed             ZdS )_LogitHelperc                     d| cxk     rdk     rZn nWd|cxk     rdk     rJn nGt          j        t          j        d| z  dz
             t          j        d|z  dz
                       ndS )Nr   r   F)rN   iscloser  )r   r   s     r4   r`  z_LogitHelper.isclose  su     q9999199999Q 
BF1Q3q5MM>BF1Q3q5MM>:::05	7r6   c                    t          j        |           }t          j        |          }t          j        |dk              rt          j        |dk               sJ t          j        |dk              rt          j        |dk               sJ t          j        d|z  dz
             }t          j        d|z  dz
             }t	          ||           d S r   )rN   rO   rH   r  r   )r   r   r   aylxlys         r4   r   z _LogitHelper.assert_almost_equal  s    Xa[[Xa[[vb1f~~0"&a..000vb1f~~0"&a..000fQrT!Vnn_fQrT!Vnn_B#####r6   N)rK   rL   rM   staticmethodr`  r   r@   r6   r4   r^  r^    sH        7 7 \7 $ $ \$ $ $r6   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	        
                    d eee                    d             Zej	        
                    de          d             Zej	        
                    deez             d             Ze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	        
                    dd  ej        ed          D                       d             Zej	        
                    de          d             ZdS )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        | |           dS )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_ticksr3   s        r4   test_basic_majorz!TestLogitLocator.test_basic_major  sr      A A#A-?)?A
 
 "---((COT"	
 	
 	
 	
 	
r6   rp  c                 B   t          j        d          }t          j        dg d          }dD ]n}|                    |           |                    |            |j        | } |j        | }|j        |j        k    sJ ||k                                    sJ odS )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,   ro  r-   rl   r.   shaperH   )r/   rp  r3   maxn_locr*   ticks
maxn_tickss          r4   test_maxn_majorz TestLogitLocator.test_maxn_major  s     "---&SFFF 	/ 	/ENNN'''e,,,#COT*E--t4J;*"22222Z',,......	/ 	/r6   c                 D   t          t          j        t          j        |d                                        dz  dz   }t	          j        d          }t          |dd          D ]8}|                    |           t           |j	        |           |dz   k    sJ 9dS )zB
        Assert logit locator for respecting nbins param.
        r   r   r   r
   r)   r   N)
intrN   floorlog10r,   ro  rangerl   r   r.   )r/   rp  basic_neededr3   r*   s        r4   test_nbins_majorz!TestLogitLocator.test_nbins_major  s     BHRXd1g%6%67778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        | }	t          |          t          |          k    r)t          |          dz
  d	z  t          |	          k     sJ t                              t          g ||	          |           d
S )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)	rn  r   r,   ro  r  rl   r.   r^  r   )
r/   rp  rq  rr  r  r3   	minor_locr*   major_ticksminor_tickss
             r4   
test_minorzTestLogitLocator.test_minor  sX     A A#A-?)?A
 
 >**"---(s$???	<B// 	J 	JENNN'''  u ---)#/40K/)/6K;3~#6#666K((1,1C4D4DDDDDD 007[7;788.J J J J	J 	Jr6   c                     t          j        d          }|j        rJ d|_        |j        sJ |                    d           |j        rJ d S )Nr
   r)   TFr   )r,   ro  r   rl   rf   s     r4   test_minor_attrz TestLogitLocator.test_minor_attr  s`    "---9	yU###9r6   r   r   c                 (    g | ]\  }}||k    ||fS r@   r@   )r   abs      r4   r   zTestLogitLocator.<listcomp>)  s1     	
 	
 	
AAvv Fvvr6   r   )repeatc                     t          j                    } |j        | }t          |          t          |          k    sJ dS )zd
        Create logit locator, and test the nonsingular method for acceptable
        value
        N)r,   ro  nonsingularrn  )r/   rp  r3   lims2s       r4   test_nonsingular_okz$TestLogitLocator.test_nonsingular_ok'  sC     "$$&d||ve}},,,,,,r6   okvalc                    t          j                    }d|}}|                    ||          \  }}||k    sJ d|cxk     r|k     sn J |d}}|                    ||          \  }}||k    sJ ||cxk     rdk     sn J dS )zh
        Create logit locator, and test the nonsingular method for non
        acceptable value
        r   r   r   r   N)r,   ro  r  )r/   r  r3   r0   r1   vmin2vmax2s          r4   test_nonsingular_nokz%TestLogitLocator.test_nonsingular_nok8  s     "$$%dtT22u}}}}5    5      QdtT22u}}}}u    q        r6   N)rK   rL   rM   ref_basic_limitsrN   rP   ref_basic_major_ticksref_maxn_limitsrA   rS   rT   r
  rs  rz  r  r  r  acceptable_vmin_vmax	itertoolsproductr  r  r@   r6   r4   rg  rg    s       	 	 	 	
R929Q??"#	R929Q??"#	R929Q??"#	R929Q??"#	R929Q??"#	R929Q??"#	R929Q??"#	R929Q###$	 GFFO["344 
 
	 
 [V_55/ / 65/ [V%5%GHH	< 	< IH	< ["344 J J	 J2  
2q!!
!
cYRYr1%%%
%
 [	
 	
+)+,@KKK	
 	
 	
 - - - [W&:;;! ! <;! ! !r6   rg  c                       e Zd Zd ZdS )TestFixedLocatorc                     t          j        t          dd          d          }|                    d           |j        dk    sJ dS )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  rl   r*   )r/   fixeds     r4   rm   z TestFixedLocator.test_set_paramsJ  sQ     $U1b\\;;;q!!!{ar6   Nr\  r@   r6   r4   r  r  I  s#                 r6   r  c                       e Zd Zd ZdS )TestIndexLocatorc                     t          j        dd          }|                    dd           |j        dk    sJ |j        dk    sJ dS )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_paramsV  s^     $!A666a***{a|q      r6   Nr\  r@   r6   r4   r  r  U  s#        	! 	! 	! 	! 	!r6   r  c                       e Zd Zd Zej                            dddddgfddg dfg          d             Zd Zd	 Z	d
S )TestSymmetricalLogLocatorc                     t          j        dd          }|                    dgd           |j        dgk    sJ |j        dk    sJ dS )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_paramsc  s_     +qAAASEA...ySE!!!!|q      r6   r'   r   r   r   r   r   r   c                     t          j        dd          }|                    ||          }t          ||           d S )Nr"   r   r  )r0   r1   )r,   r  r.   r   )r/   r0   r1   r2   r  rx  s         r4   test_valuesz%TestSymmetricalLogLocator.test_valueso  sD     +qAAAT555(+++++r6   c                     t          j        ddddg          }|                                 |j                            dd            |            g dk                                    sJ d S )Nr"   r   rr   r  )rz   r  r#  )	g      4g      Dg       g      r   rr   r  r   r   )r,   r  create_dummy_axisaxisset_view_intervalrH   r  s     r4   	test_subsz#TestSymmetricalLogLocator.test_subs|  sw    +qSzRRR""3+++OOOOTTVVVVVVVr6   c                    t          j        dd          }|                                 |j                            dd            |            dgk                                    sJ |j                            dd            |            ddgk                                    sJ |                    dd          d	k    sJ |                    d
d
          dk    sJ |                    dd          dk    sJ d S )Nr"   r   r  ri   rl  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AA""1a(((###%%%%%""1b)))#t$))+++++r2&&(2222sC((J6666q!$$777777r6   N)
rK   rL   rM   rm   rA   rS   rT   r  r  r  r@   r6   r4   r  r  b  s        
! 
! 
! ["A1vQ


# , , ,W W W	8 	8 	8 	8 	8r6   r  c                   >    e Zd Zd Zd Zd Zd Zd Zd Zd Z	d Z
d	S )
TestAsinhLocatorc                     t          j        dd          }|j        dk    sJ |j        dk    sJ |j        dk    sJ d S )NgX9v@   )linear_widthr^   r"   )r,   AsinhLocatorr  r^   rz   r/   lctrs     r4   	test_initzTestAsinhLocator.test_init  sQ    #DDD E))))}""""yB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 |                    d           |j        dk    sJ |                    d            |j        dk    sJ |                    d	
           |j        d	k    sJ |                    d 
           |j        d	k    sJ |                    d           |j        dk    sJ |                    d            |j        dk    sJ |                    d           |j        dk    sJ |                    d            |j        dk    sJ |                    g            |j        J d S )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)*> > > }""""~&&&&yA~~~~yK''''$$$}""""}""""#&&&~$$$$$'''~$$$$QyA~~~~T"""yA~~~~Z(((yJ&&&&T"""yJ&&&&R   y     r6   c                    t          j        ddd          }t          |                    dd          t	          j        ddd                     t          |                    d	d
          t	          j        d	dd                     t          |                    dd          t	          j        ddd                     d S )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JJD,,R33Ib$44	6 	6 	6D,,T377IdE488	: 	: 	:D,,UD99IeVU;;	= 	= 	= 	= 	=r6   c                     t          j        ddd          }t          |                    dd          g d           t          |                    dd	          g d
           d S )Nr   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  s    #rJJJD,,T3774 4 4	5 	5 	5 	D,,UD997 7 7	8 	8 	8 	8 	8r6   c                     t          j        ddd          }t          |                    dd          g d           dS )	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  sF    #qqIIID,,T3779I9I9IJJJJJr6   c                     t          j        dd          }t          |                    dd          t	          j        ddd                     d S )Nr   r<   r]   e   f   gq=
ףY@r   r  r  s     r4   test_fallbackzTestAsinhLocator.test_fallback  sV    #C"555D,,S#66Ic6377	9 	9 	9 	9 	9r6   c                    t          j        dddd          }|                                 |j                            dd           t           |            g d           |j                            dd	           t           |            g d
           |j                            dd           t           |            g d
           |j                            dd           t           |            g d           d S )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***DDFFJJJ///	##B,,,DDFFJJJ///	##E4000DDFFJJJ///	##As+++DDFFNNN33333r6   c                     t          j        dddd          }t          |                    dd          g d           t          j        dd	d
          }t          |                    dd          g d           d S )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  s    %1q+-I? ? ?F..tS99A A A	B 	B 	B
 $!bqIIIE--eT::6 6 6	7 	7 	7 	7 	7r6   N)rK   rL   rM   r  rm   r  r  r  r  r  r  r@   r6   r4   r  r    s          ! ! !>= = =8 8 8K K K9 9 94 4 4"7 7 7 7 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
                            dddg          d             Ze	j
                            de          d             Ze	j
                            de          d             Ze	j
                            de          d             Zd Zd Ze	j
                            de          d             Ze	j
                            de          d             Ze	j
                            d e          d!             Ze	j
                            d e          d"             Zd# Zd$ Zd% Zd&S )'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@ru  )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   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Arl  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                                                            d                                          |k    sJ d S )Naxes.unicode_minusr   )r   rD  r   gcar   get_major_formatterformat_data_shortstrip)r/   unicode_minusrI   s      r4   test_unicode_minusz&TestScalarFormatter.test_unicode_minus5  sc     .;)*GIIO//11CCBGGMMOO     r6   zleft, right, offsetc                 p   t          j                    \  }}|j                                        }||k    rt	          j        t          d          nt                      5  |                    ||           d d d            n# 1 swxY w Y   |j        	                                 |j
        |k    sJ ||k    rt	          j        t          d          nt                      5  |                    ||           d d d            n# 1 swxY w Y   |j        	                                 |j
        |k    sJ d S )NzAttempting to set identicalr>   )r   r   r   r  rA   r(  r[  r   r   _update_ticksr   )r/   leftrightr   r   r   	formatters          r4   test_offset_valuez%TestScalarFormatter.test_offset_value=  s   ,..RH0022	  l;.KLLLL$/MM	% 	%KKe$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	   6))))  l;.KLLLL$/MM	% 	%KKt$$$	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	% 	   6))))))s$   BB	B"DD	D	
use_offsetc                     t          j        d|i          5  t          j                    }||                                k    sJ |j        dk    sJ 	 d d d            d S # 1 swxY w Y   d S )Nzaxes.formatter.useoffsetr   )r   r   r,   ScalarFormatterget_useOffsetr   )r/   r  tmp_forms      r4   test_use_offsetz#TestScalarFormatter.test_use_offsetN  s    ^7DEE 	( 	(.00H!7!7!9!99999?a'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   ;A  A$'A$use_math_textc                     t          j        d|i          5  t          j                    }||                                k    sJ 	 d d d            d S # 1 swxY w Y   d S )Naxes.formatter.use_mathtext)r   r   r,   r
  get_useMathText)r/   r  r  s      r4   test_useMathTextz$TestScalarFormatter.test_useMathTextU  s    ^:MJKK 	? 	?.00H H$<$<$>$>>>>>>	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	? 	?s   .AAAc                     t          j                    }|                    d           |                                rJ |j        dk    sJ d S )Nr   )r,   r
  set_useOffsetr  r   r/   r  s     r4   test_set_use_offset_floatz-TestScalarFormatter.test_set_use_offset_float[  sU    *,,s###))+++++#%%%%%%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                    }|	                                sJ |
                                 |j                            dd           |                    g d	           | |d
          v sJ 	 d d d            d S # 1 swxY w Y   d S )Nthousands_sepgroupingr   zLocale does not apply groupingzaxes.formatter.use_localeTr   r"   )r   r   r\   r  )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_localea  sS    ""?# 	:d:&rss+V_4E/FFFK8999^8$?@@ 	( 	(.00H))+++++&&(((M++Ar222iii(((((3--'''''	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	( 	(s   'A?C44C8;C8z.sci_type, scilimits, lim, orderOfMag, fewticksc                    t          j                    }|                    |           |                    |           t	          j                    \  }}|j                            |            |j        |  |r,|j        	                    t          j
        d                     |                    |j                                                   ||j        k    sJ d S )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_scilimitsp  s     *,,)))  +++,..R
$$X...S 	?H&&w':1'='=>>>"(4466777X6666666r6   zvalue, expectedc                     dt           j        d<   t          j                    }|                    |          |k    sJ d S )NFr  )r   rD  r,   r
  format_data)r/   valuer2   sfs       r4   test_format_dataz$TestScalarFormatter.test_format_data  s@    -2)*$&&~~e$$000000r6   zdata, expectedc                     t          j                    \  }}|                    dd           |j                                        j        } ||          |k    sJ d S )Nr   r   )r   r   r   r   r  r  )r/   r   r2   r   r   fmts         r4   test_cursor_precisionz)TestScalarFormatter.test_cursor_precision  sZ    ,..R
Bh**,,>s4yyH$$$$$$r6   c                 6   t          j                    }|                                 |j                            dd           |j        } ||          |k    sJ |j                                        dk    sJ |j                                        dk    sJ d S )Nr   r"   rl  )r,   r
  r  r  r  r  get_tick_space
get_minpos)r/   r   r2   r2  r5  s        r4   test_cursor_dummy_axisz*TestScalarFormatter.test_cursor_dummy_axis  s     $&&

!!!R((("s4yyH$$$$w%%''1,,,,w!!##q((((((r6   c                    t           j                            dddd           t          t          j                  j        dk     r|t	          j        t          d          5  t          j
                    \  }}|                    g d           |j                                         d d d            d S # 1 swxY w Y   d S t	          j        t          d	          5  t	          j        t          d          5  t          j
                    \  }}|                    g d           |j                                         d d d            n# 1 swxY w Y   d d d            d S # 1 swxY w Y   d S )
Nserifcmr10F)font.familyz
font.serifr  ri   zcmr10 font should ideallyr>   r  z
Glyph 8722)r   rD  updateparse_versionrA   __version__r   r(  r[  r   r   r   canvasdrawr  s      r4   test_mathtext_ticksz'TestScalarFormatter.test_mathtext_ticks  s   "!+0
 
 	 	 	 +,,2Q66k1LMMM " ",..Rjjj)))
!!!" " " " " " " " " " " " " " " " " "
 ,{,??? " ",{2MNNN" ",..Rjjj)))
!!!	" " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " " "sJ   !AB55B9<B9E$9AE E$E	E$E	E$$E(+E(c                    t           j                            dddd           |                    t          j        d          5  t          j                    \  }}|                    ddgd	dg           |	                    d
           g d}t          j                    }|                    |t          ||                     |j                                         |j        rJ 	 d d d            d S # 1 swxY w Y   d S )Nr=  cmT)r>  zmathtext.fontsetr  zmatplotlib.mathtext)loggergQr   (   r  )r  r   r   r  )r   rD  r?  at_levelloggingWARNINGr   r   plotr  r,   LogFormatterSciNotation
set_yticksmaprB  rC  text)r/   caplogr   r   yticksr  s         r4   test_cmr10_substitutionsz,TestScalarFormatter.test_cmr10_substitutions  sE   " $+/
 
 	 	 	 __W_5J_KK 	# 	#lnnGCGGUDMB:...MM%   '''F799IMM&#i"8"8999JOO{""""	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	# 	#s   B#C66C:=C:c                 x    t          j                    }|                    g             |d          dk    sJ d S )Nr    )r,   r
  r   )r/   r2  s     r4   test_empty_locsz#TestScalarFormatter.test_empty_locs  s8    $&&
Br#ww"}}}}}}r6   N)rK   rL   rM   offset_datause_offset_datauseMathText_datascilimits_datacursor_datar0  rA   rS   rT   r  r  r  r  r  r#  r.  r3  r6  r:  rD  rS  rV  r@   r6   r4   r  r    sk         KB UmOe}
 
 
N 
W				xK  K [47GI I I I [2K@@* * A@*  [\?;;( ( <;( [_.>??? ? @??
& & &( ( ( [8.J J7 7J J7 [.<<1 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                            de	          ej                            de          d                         Zd ZdS )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                   	 t          j        ||          		                                 	j                            d||z             ||z  }	fdt          ||          D             }d |D             }||k    sJ d S )Nrz   labelOnlyBaser   c                 .    g | ]\  }} ||          S r@   r@   )r   r   posr  s      r4   r   z7TestLogFormatterExponent.test_basic.<locals>.<listcomp>  s)    IIIC))As##IIIr6   c                 :    g | ]}|                     d d          S )-u   −replace)r   labels     r4   r   z7TestLogFormatterExponent.test_basic.<locals>.<listcomp>  s'    OOOUEMM#'788OOOr6   )r,   LogFormatterExponentr  r  r  r
  )
r/   rl  rz   exponentlocs	positionsr2   valslabelsr  s
            @r4   r5   z#TestLogFormatterExponent.test_basic  s    
 0d?LN N N	##%%%((D(N;;;TzIIIICi4H4HIIIOOhOOO!!!!!!r6   c                     t          j        dd          }|                                 |j                            dd            |d          dk    sJ d S )Nr"   Trk  r   g&$?rU  )r,   rt  r  r  r  )r/   r  s     r4   
test_blankz#TestLogFormatterExponent.test_blank  sb    0bMMM	##%%%((B///y!!R''''''r6   N)rK   rL   rM   rN   rP   rO   pir  float
param_datae	base_datarA   rS   rT   r5   r{  r@   r6   r4   r]  r]    s9       	q)")B$$ibiC&8&8	/	/	/	1 
HBHc7BE3hGHH	qDDD	F	HBH^^^59995588				!	J c4-I[@*N N[VY//	" 	" 0/N N	"( ( ( ( (r6   r]  c                   |    e Zd Z ej                    Zg dZej        	                    de          d             Z
dS )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  |                     |          |k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nzaxes.formatter.min_exponent)r   r   r5  )r/   min_exponentr1  r2   s       r4   test_min_exponentz*TestLogFormatterMathtext.test_min_exponent  s    ^:LIJJ 	/ 	/88E??h.....	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/ 	/s   AAAN)rK   rL   rM   r,   LogFormatterMathtextr5  	test_datarA   rS   rT   r  r@   r6   r4   r  r    se        
&'
&
(
(C	 	 	I [<iHH/ / IH/ / /r6   r  c                       e Zd Zg dZej                            d          ej        	                    de          d                         Z
dS )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"   rj  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            d S # 1 swxY w Y   d S )Nry   text.usetexF)r,   rM  r   r   )r/   rz   r1  r2   r  s        r4   r5   z&TestLogFormatterSciNotation.test_basic  s     3>>>	^]E233 	0 	09U##x/////	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0 	0s   AAAN)rK   rL   rM   r  r   styler  rA   rS   rT   r5   r@   r6   r4   r  r    sp          I& 	Yy!![4i@@0 0 A@ "!0 0 0r6   r  c                      e Zd Zg dZej                            de          d             Zej                            dg d          d             ZddZ	e
j                            d	          d
             Zej                            dg d          d             Zej                            dg d          d             ZdS )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  r8  z3.1e-5)r  r8  z3.1e-4)r  r8  z3.1e-3)r  r8  z3.1e-2)r  r8  z3.1e-1)r  r8  r  )r  r8  z3.1e1)r  r8  z3.1e2)r  r8  z3.1e3)r  r8  z3.1e4)r  r8  z3.1e5)r  r8  r  )r   r8  r  )r   r8  r  )r   r8  r  )r   r8  r  )r   r8  r_  )r"   r8  r  )r
   r8  r  )r  r8  r  )r  r8  r  )r  r8  r  zvalue, domain, expectedc                 h    t          j                    }|                    ||          }||k    sJ d S N)r,   LogFormatter_pprint_val)r/   r1  domainr2   r5  rs  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                    \  }}|                    d           |j                                        }|                    |          |k    sJ |                    |          |k    sJ d S )Nr  )r   r   
set_xscaler   r  r0  r  )r/   r1  longshortr   r   r5  s          r4   r3  z!TestLogFormatter.test_format_data  sz     ,..R
eh**,,u%%----$$U++u444444r6   r@   c                 $   |                                 |                                }                    |           |dt          j        t          j        |                    z  z  }fd|D             }fd|D             }||k    sJ dS )z.Test whether locator marks subs to be labeled.r"   c                 2    g | ]}t          |          v S r@   )round)r   cr#  s     r4   r   z0TestLogFormatter._sub_labels.<locals>.<listcomp>  s$    :::q%((d*:::r6   c                 .    g | ]} |          d k    S rU  r@   r   r   r5  s     r4   r   z0TestLogFormatter._sub_labels.<locals>.<listcomp>  s%    888qcc!ffl888r6   N)get_minor_formatterr   r   rN   r}  r~  )r/   r  r#  minor_tlocscoefslabel_expected
label_testr5  s     `    @r4   _sub_labelszTestLogFormatter._sub_labels  s    &&((,,..[!!!b28BH[,A,A#B#BCC::::E:::8888K888
^++++++r6   r  c           	         t          j                    \  }}|                    d           |j                            t          j        dg                      |j                            t          j        dt          j	        dd                               |j        
                    t          j        d                     |j                            t          j        d                     |                    dd	           |j                                                            |j                                                   fd
|j                                        D             }t          j        |          sJ |                     |j        g            |                    dd           |                     |j        g            |                    dd           |                     |j        g            |                    dd           |                     |j        g d           |                    dd           |                     |j        t          j	        ddt&                               d S )Nr  r"   )rz   r#  r   T)rl  Fr   r3  c                 .    g | ]} |          d k    S r  r@   r  s     r4   r   z2TestLogFormatter.test_sublabel.<locals>.<listcomp>  s;     D D D!" !SVVr\ D D Dr6   r"  i   P   ri   )r   r\   r   r   r   r   re  )r   r   r  r   r  r,   r  r   rN   rP   r'  r  set_minor_formatterr   r  r   r(  rH   r  r|  )r/   r   r   show_major_labelsr5  s       @r4   test_sublabelzTestLogFormatter.test_sublabel  so    ,..R
e
""7#52B#G#G#GHHH
""7#52;=9Q;K;K$M $M $M 	N 	N 	N
$$W%9%M%M%MNNN
$$W%9%N%N%NOOO
Ash**,,RX//11222D D D D&(h&@&@&B&BD D Dv'(((((+++ 	As+++ 	Ar+++ 	Aq555 	C	!Rs(C(C(CDDDDDr6   val)r   r"   r
   r  c                     t          j                    }|                                 |j                            dd            ||          t          |          k    sJ d S Nr   r"   )r,   r  r  r  r  strr/   r  temp_lfs      r4   test_LogFormatter_callz'TestLogFormatter.test_LogFormatter_call  sa     &((!!###&&q"---ws||s3xx''''''r6   )g       g       g       g       c                     t          j                    }|                                 |j                            dd            ||           d S r  )r,   r  r  r  r  r  s      r4   test_LogFormatter_call_tinyz,TestLogFormatter.test_LogFormatter_call_tiny  sM     &((!!###&&q"---r6   N)r@   )rK   rL   rM   pprint_datarA   rS   rT   r  r3  r  r   r  r  r  r  r  r@   r6   r4   r  r    sJ       E E EKN [6DD! ! ED!
 [1 4 4 4  5 5 5, , , , 	Yy!!#E #E "!#EJ [U$6$6$677( ( 87( [U$F$F$FGG  HG  r6   r  c                      e Zd Zed             Zej                            dg d          d             Z e	d  e
dd          D             d  e
dd          D             z   d	gz             Zej                            d
e          d             Zej                            d
d          d             Zej                            d
dd ej         ej        ddd                     z   z            d             Zg dZej                            de          d             Zd Zd Zd Zej                            dd          d             ZdS )TestLogitFormatterc                    t          j        d|           }|ri|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?   r}  r|  rX   )stringr?   r  mantissar  r1  r  r  s           r4   logit_deformatterz$TestLogitFormatter.logit_deformatter  s	     
 
  	=,D/4V}CuU6]+++!H).v)B3uV}%%%DrTz)EV} f 9 %u9$CV
 
  	eEl++U5=-A-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                    |Nt          j        t                    5  t                              |           d d d            d S # 1 swxY w Y   d S t                              |          }t
                              ||          sJ d S r  )rA   rB   rX   r  r  r^  r`  )r/   fxr   r   s       r4   test_logit_deformaterz(TestLogitFormatter.test_logit_deformater  s     9z** 9 9"44R8889 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 9 #44R88A''1-------s   AAAc                     g | ]}d | z  	S )r"   r@   r   is     r4   r   zTestLogitFormatter.<listcomp>(  s    ******r6   r   r"   c                      g | ]}d d| z  z
  S )r   r"   r@   r  s     r4   r   zTestLogitFormatter.<listcomp>)  s"    
0
0
0a1rqbz>
0
0
0r6   r   r   c                     t          j        d          }|                    | j                    ||          }t                              |          }t                              ||          sJ dS )zj
        Test the formatted value correspond to the value for ideal ticks in
        logit space.
        Fuse_overlineN)r,   LogitFormatterr   decade_testr  r  r^  r`  )r/   r   r  sx2s        r4   r5   zTestLogitFormatter.test_basic-  sp     *>>>	4+,,,IaLL11!44##Ar*******r6   )r   r   r   r   r    r   c                     t          j        d          }|                    | j                    ||          }|dk    sJ dS )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_invalid9  sL     *>>>	4+,,,IaLLBwwwwwwr6   r}   r'  c                 d   t          j        d          }dD ]}|d|z  z   dk     r|                    |d|z  z
  ||d|z  z   g            ||          } ||d|z  z             }t                              |          t                              |          z
  }d|cxk     r	d|z  k     sn J dS )zS
        The format length should change depending on the neighbor labels.
        Fr  )	r"   r	   r  r
      r  i  i  r  r   r   r   N)r,   r  r   r  r  )r/   r   r  Nsxsx1ds          r4   test_variablelengthz&TestLogitFormatter.test_variablelengthD  s    
 *>>>	@ 		% 		%A1q5y1}}""AAIq!a!e)#<===Yq\\iAE	**&88==(::2>>?  1}}}}q1u}}}}}}		% 		%r6   ))Trk  )r  F)K   F)Tri  )r  r   T)Trh  )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 ]|\  }}|                    |           |                    |          }	d |	D             }
|r t          |
          dk    sJ ||f            ]t          |
          dk    sJ ||f            }dS )z,
        Test minor/major displays.
        Tr   c                 8    g | ]}t          |          d k    |S r   r   r   fs     r4   r   z:TestLogitFormatter.test_minor_vs_major.<locals>.<listcomp>k  #    ;;;aA




r6   r   N)	r,   ro  r.   rN   rO   r  set_minor_thresholdformat_ticksr   )r/   methodrp  casesmin_locrx  min_form	threshold	has_minor	formattedlabelleds              r4   test_minor_vs_majorz&TestLogitFormatter.test_minor_vs_major\  s     	#*666G'G'.EEHTNNE)555$) 	B 	B Iy((333 --e44I;;9;;;H B8}}q(((9i*@((((8}})))Iy+A))))	B 	Br6   c                 &   t          j        d          }t          j        d          }|                    dd          }dD ]M}|                    |           |                    |          }d |D             }t          |          |k    sJ NdS )z1
        Test the parameter minor_number
        Tr   r   r   )r   r   ri   ru  c                 8    g | ]}t          |          d k    |S r   r  r  s     r4   r   z8TestLogitFormatter.test_minor_number.<locals>.<listcomp>{  r  r6   N)r,   ro  r  r.   set_minor_numberr
  r   )r/   r  r  rx  minor_numberr  r  s          r4   test_minor_numberz$TestLogitFormatter.test_minor_numberq  s     &T222)555##D(33) 	1 	1L%%l333 --e44I;;9;;;Hx==L00000		1 	1r6   c                     d}d}d}t          j        d          } ||          |k    sJ |                    d            ||          |k    sJ |                    d            ||          |k    sJ dS )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~  s     *3%5999tAww#~~~~$tAww#~~~~%   tAww#~~~~~~r6   c                     t          j                    }d |d          v sJ |                    d           d |d          v sJ |                    d           d |d          v sJ dS )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  s     %''c****%   S		!!!!*%%%TT#YY&&&&&&r6   r  )r
      i  c                 P   t          j        dd|          dd         }t          j                    }|D ]q}|                    |          }|                    d          rdt          |dd                    z
  }nt          |          }t          ||z
            d|z  k     sJ rd S )Nr   r   r   z1-r   )rN   rs   r,   r  r  
startswithr}  abs)r/   r  rv  r  r   r  r  s          r4   test_format_data_shortz)TestLogitFormatter.test_format_data_short  s    {1a##AbD)%'' 	' 	'A''**B}}T"" r!""v&2YYq2v;;Q&&&&&	' 	'r6   N)rK   rL   rM   re  r  rA   rS   rT   r  rn  r  r  r5   r  rN   exprs   r  lims_minor_majorr  r  r  r   r%  r@   r6   r4   r  r    s       < < \<@ [	
 	
 	

 
. .
 
. &**UU1b\\***
0
055B<<
0
0
0	1'	 K [S+..	+ 	+ /.	+ [S"?@@  A@ [S!q626;2;r1b3I3I2I+J+J'J"KLL% % ML%    [24DEEB B FEB(1 1 1  	' 	' 	' [S/22	' 	' 32	' 	' 	'r6   r  c                       e Zd Zd ZdS )TestFormatStrFormatterc                 P    t          j        d          }d |d          k    sJ d S )Nz%05d00002r   )r,   FormatStrFormatterr  s     r4   r5   z!TestFormatStrFormatter.test_basic  s1    -f55((1++%%%%%%r6   N)rK   rL   rM   r5   r@   r6   r4   r)  r)    s#        & & & & &r6   r)  c                   ^    e Zd Zg dZej                            de          d             ZdS )TestStrMethodFormatter)){x:05d}r   Fr+  )r/  r0  Tr+  )r/  r  Fz-0002)r/  r1  Tu   −0002){x:03d}-{pos:02d}r   r   F002-01)r2  r3  Tr4  )r2  r  r   Fz-02-01)r2  r5  Tu   −02-01z&format, input, unicode_minus, expectedc                     t          j        d|i          5  t          j        |          } || |k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  )r   r   r,   StrMethodFormatter)r/   formatinputr   r2   r5  s         r4   r5   z!TestStrMethodFormatter.test_basic  s    ^1=ABB 	+ 	+,V44C3;(*****	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+ 	+s    AA	A	N)rK   rL   rM   r  rA   rS   rT   r5   r@   r6   r4   r.  r.    sU        	 	 	I [EyQQ+ + RQ+ + +r6   r.  c                   ^    e Zd Zg dZej                            de          d             ZdS )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)TrA  )u   −1.23457 mu   −1 mu	   −1.23 m)Tg       r^  r^  z0.00Tr   rB  rC  )Tgm>)u
   1.23457 µu   1 µu   1.23 µ)Tg_c97ݚ?)z	123.457 mz123 mz123.46 m)Tr   )100 mrD  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*:?@rE  rE  1.00 k)F*:?)r=  r=  z-1.00 k)TrH  )r>  r>  u	   −1.00 k)Tr  rF  )Ti  )z1.001 krE  rG  )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 QrI  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    sJ 	fd|D             }t          j        	          t          j        	d	          t          j        	d	          f}t	          ||          D ]\  }} ||          |k    sJ d
D ]
	
fd|D             }t          j        	
          t          j        	d
          t          j        	d
          f}t	          ||          D ]\  }} ||          |k    sJ 
fd|D             }t          j        
          t          j        d
          t          j        d
          f}t	          ||          D ]\  }} ||          |k    sJ dS )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   V  dS r    Nr@   )r   _sDIGITSUNITs     r4   	<genexpr>z/TestEngFormatter.test_params.<locals>.<genexpr>  sV       : :*, +-R&F*:*:rCx$I: : : : : :r6   )unit)rT  rL  )rU  u    z@_@c              3   n   K   | ]/}|d          v r|z   z   n|                     d          z   V  0dS rN  rq  )r   rP  rQ  rR  _seps     r4   rS  z/TestEngFormatter.test_params.<locals>.<genexpr>  sg       / /! 02"v/?/?29t++ "

3 5 5 </ / / / / /r6   )rT  r"  )rT  rL  r"  c              3   D   K   | ]}|                     d           V  dS )rO  Nrq  )r   rP  rV  s     r4   rS  z/TestEngFormatter.test_params.<locals>.<genexpr>%  s1      DDR2::c400DDDDDDr6   )r"  )rL  r"  N)r   rD  r,   EngFormatterr
  )r/   r   r9  r2   exp_outputs
formatters
_formatter_exp_outputrQ  rR  rV  s           @@@r4   test_paramszTestEngFormatter.test_params  s    .;)*  "" *** ***


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


 (+:{'C'C 	4 	4#J:e$$33333 = 	8 	8D/ / / / / /%-/ / /K $$D999$$qdCCC$$qdCCCJ
 ,/z;+G+G 8 8'
K!z%((K77777
 EDDD8DDDK$...$A4888$A4888J
 ,/z;+G+G 8 8'
K!z%((K7777781	8 	8r6   N)rK   rL   rM   raw_format_datarA   rS   rT   r]  r@   r6   r4   r;  r;    s[        # # #OJ [=OOD8 D8 POD8 D8 D8r6   r;  c                     t          j                    \  } }|                    g dg d           |                    g d           t	          j        d          t	          j        d          fD ]]}|j                            |           | j        	                                 d |
                                D             }|g dk    sJ ^d S )N)r   r  r  T)usetex)useMathTextc                 6    g | ]}|                                 S r@   )get_text)r   labls     r4   r   z8test_engformatter_usetex_useMathText.<locals>.<listcomp>7  s     NNNT]]__NNNr6   )z$0$z$500$z$1$ k)r   r   rL  r   r,   rX  r   r'  rB  rC  get_xticklabels)r   r   r  x_tick_label_texts       r4   $test_engformatter_usetex_useMathTextrg  /  s    lnnGCGGNNNNNN+++MM...!!!*$777*t<<<> > >	
$$Y///
NN9K9K9M9MNNN !$=$=$======> >r6   c                       e Zd Zg dZg dZg dZej                            dee          d             Z	ej                            de          d             Z
d	S )
TestPercentFormatter))r
   r   %r  r
   z120%)r
   r   rj  r
   Z   z100%)r
   r   rj  rk  r  z90%)r
   r   rj  r   rH  z-2%)r
   r   rj  g     V@r
   z90.0%)r
   r   rj  gfffffT@rk  z80.1%)r
   r   rj  gQQ@r  z70.2%)r
   r   rj  gxFNrH  z-60.6%)r
   Nrj  _   r   z95.00%)r   Nrj  r\   r   z300%)      1@Nrj  r   g      !@z6%)rm  Nrj  r   g @z5.9%)r!   Nrj  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\}\%)TFro  )TTro  z2xmax, decimals, symbol, x, display_range, expected)idsc                     t          j        |||          }t          j        ddi          5  |                    ||          |k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nr  Frcr,   PercentFormatterr   r   
format_pct)r/   xmaxdecimalssymbolr   display_ranger2   r  s           r4   r5   zTestPercentFormatter.test_basicr  s    
 ,T8VDD	^u5666 	F 	F''=99XEEEEE	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F 	F   AA Azis_latex, usetex, expectedc                     t          j        d|          }t          j        d|i          5  |                    dd          |k    sJ 	 d d d            d S # 1 swxY w Y   d S )Nz\{t}%)ry  is_latexr  rr  r  r
   rt  )r/   r}  r`  r2   r5  s        r4   
test_latexzTestPercentFormatter.test_latex{  s    &hJJJ^v6777 	7 	7>>"c**h66666	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7 	7r{  N)rK   rL   rM   percent_datapercent_ids
latex_datarA   rS   rT   r5   r~  r@   r6   r4   ri  ri  =  s          L.  K,  J [@k  + +F F+ +F [9:FF7 7 GF7 7 7r6   ri  c                     	 t          j        t           j        d           n%# t           j        $ r t	          d           Y d S w xY wt          j        dd          } d}|                     |d          }|dk    sJ d}|                     |d          }|d	k    sJ t          j        d
d          } d}|                     |d          }|dk    sJ d S )Nzde_DE.UTF-8z9SKIP: Locale de_DE.UTF-8 is not supported on this machineT)ra  	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)rx  r5  r   s      r4   _impl_locale_commar    s   6666<   IJJJ #EEEE
"C,,S#66A(((((
%C,,S#66A+++++#FFFE
C,,S#66A::::::s   " AAc                      t           j                            t          dddi          } t	          d | j                                        D             d          }|rt          j        |           d S d S )Nr&   
MPLBACKENDAgg)timeout	extra_envc              3      K   | ]B}|                     d           |t          d           d                                         V  CdS )zSKIP:N)r#  r   r  )r   lines     r4   rS  z$test_locale_comma.<locals>.<genexpr>  sb       2 2002T#g,,--(..00 2 2 2 2 2 2r6   rU  )	r   r   subprocess_run_helperr  nextstdout
splitlinesrA   r  )procskip_msgs     r4   test_locale_commar    s     ;,,-?8De7L - N ND 2 2!%!7!7!9!92 2 2  H  H r6   c                      t          j                    \  } }t          j        t                    5  |j                            t          j                               d d d            d S # 1 swxY w Y   d S r  )	r   r   rA   rB   rU   r   r'  r,   r  r   r   s     r4   test_majformatter_typer        lnnGC	y	!	! ; ;
$$W%7%9%9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;   ,A))A-0A-c                      t          j                    \  } }t          j        t                    5  |j                            t          j                               d d d            d S # 1 swxY w Y   d S 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                            t          j                               d d d            d S # 1 swxY w Y   d S r  )	r   r   rA   rB   rU   r   r  r,   r  r  s     r4   test_majlocator_typer        lnnGC	y	!	! ; ;
""7#7#9#9:::; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ; ;r  c                      t          j                    \  } }t          j        t                    5  |j                            t          j                               d d d            d S # 1 swxY w Y   d S 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           d S )Nc                 Z   | |d}t          j        |          5                      dd|          }d d d            n# 1 swxY w Y   t          |j                                                  dk    | k    sJ t          |j                                                  dk    |k    sJ d S )N)zxtick.minor.visiblezytick.minor.visiblerr  r   r   )r   r   add_subplotr   r   get_minor_ticksr   )xminoryminorr  rs  r   r   s        r4   minorticksubplotz,test_minorticks_rc.<locals>.minorticksubplot  s    %+%+- -^r""" 	* 	*Aq))B	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* 	* BH,,..//!3>>>>BH,,..//!3>>>>>>s   A  AAFr   Tr   r\   r   )r   figure)r  r   s    @r4   test_minorticks_rcr    s    
*,,C? ? ? ? ? UE1%%%T5!$$$UD!$$$T4#####r6   c                  
   t          j                    fd} g d}|D ]N} | dd|d            | dd|d            | dd|d            | dd|d                                            Ot          j                   d	S )
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                                         dd|          }|                    |           |                    |           | s|s|                                 | r4|s2|j                                         |j                                         | s4|r2|j                                         |j                                         | r|r|                                 t          |j                                                  dk    | k    sJ t          |j                                                  dk    |k    sJ d S )Nr   r   )	r  r  r  minorticks_offr   r   r   r   r  )r  r  scaler  r   r   s        r4   minortickstogglez0test_minorticks_toggle.<locals>.minortickstoggle  sJ   __Q1%%
e
e 	 f 	  	&& 	&H""$$$H##%%% 	%& 	%H##%%%H""$$$ 	f 	BH,,..//!3>>>>BH,,..//!3>>>>>>r6   )linearr  asinhlogitFr   Tr   r\   r   N)r   r  clearclose)r  scalesr  r   s      @r4   test_minorticks_toggler    s     *,,C? ? ? ? ?$ 100F  ua000ueQ///eQ///tUA...		IcNNNNNr6   z%remove_overlapping_locs, expected_num))Tr   )Nr   )Frl  c                    t          j        ddd          }t          j        t          |                    }t	          j                    \  }}|                    ||           |j                            t          j
                                                   |j                            t          j
                            d                     |j                            t          j
                            d                     |j                            t          j
                            d                     |j                            d           | | |j        _        |j        j        }||j                                        k    sJ t	          j        |j        |	           |j        j        }||j        j        k    sJ t          |j                                                  |k    sJ t          |j                                                  |k    sJ t          |j                                                  |k    sJ t          |j                                                  |d
z  k    sJ d S )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AAAA
AAlnnGCGGAqMMMHsy3355666H  !8!8!@!@AAAHsy44^DDEEEH  !8!8!A!ABBBHR   *+B( h.Grx;;======HRXw7777
(
*C2833333 rx))++,,<<<<rx''))**l::::rx++--..,>>>>rx**,,--a??????r6   subhiaardvark)r   r   c                     t          j                    }t          j        t                    5  |                    |            d d d            d S # 1 swxY w Y   d S )Nr"  )r,   r  rA   rB   rX   rl   )r  rA  s     r4   test_bad_locator_subsr    s     
			B	z	"	"    
3                                   s   AAAr^   )r   r   r\   rl  r  c           	      2   t          j                    }|                    |            dD ]j}|                    d|          }t	          j        t	          j        |                    dd                              dk                                    sJ kd S )Nr]   )r!   r'  rl  r<   r#   r  r
   r  r   r      r   )r,   r  rl   r.   rN   diffr~  rH   )r^   rA  toprx  s       r4   test_small_range_loglocatorr  '  s     
			BMM8M$$$/ F Fr3''3!7!78899Q>CCEEEEEEF Fr6   c                      t          j                    }  | d          dk    sJ |                     d          dk    sJ |                     d          dk    sJ d S )Nr   rU  )r,   NullFormatterr0  r  r  s    r4   test_NullFormatterr  1  sm    %''I9S>>R  %%++++&&s++r111111r6   r  c                     d|  S )Nzval: r@   )r  s    r4   <lambda>r  9  s    KAKK r6   )r;   barc                     |                                  dk    sJ |                     d           |                                  dk    sJ d S )NrU  r   )
get_offsetset_offset_stringr  s    r4   test_set_offset_stringr  8  sX     !!R''''&&&!!U******r6   c                  r   t          j                    \  } }|                    t          j        d          dg           |                    t          j        d          dg           |                    t          j        d          dg           |                    d           |                    d           |                                 |                                  |                                sJ t          |j
                                        t          j        j                  sJ dS )	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   )rw  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  A  s    lnnGCJJry}}J,,,JJry}}J,,,JJry}}J,,,GG'GGG'G   bh0022CJ4OPPPPPPPr6   )C
contextlibr   r  r  rJ  rV   packaging.versionr   r@  numpyrN   numpy.testingr   r   rA   
matplotlibr   matplotlib.pyplotpyplotr   matplotlib.tickerr  r,   r   rZ   rv   r   r  rX  r^  rg  r  r  r  r  r  r]  r  r  r  r  r)  r.  r;  rg  ri  r  r  r  r  r  r  r  r  rS   rT   r  zerosr  r  r  r  r  FuncFormatterFixedFormatterr  r  r@   r6   r4   <module>r     sl   " " " " " "       				 4 4 4 4 4 4     A A A A A A A A            # # # # # #,, ,, ,, ,, ,, ,, ,, ,,^F F F F F F F F<8! 8! 8! 8! 8! 8! 8! 8!vmH mH mH mH mH mH mH mH`O7 O7 O7 O7 O7 O7 O7 O7d       $ $ $ $ $ $ $ $"O! O! O! O! O! O! O! O!d	  	  	  	  	  	  	  	 
! 
! 
! 
! 
! 
! 
! 
!)8 )8 )8 )8 )8 )8 )8 )8Xb7 b7 b7 b7 b7 b7 b7 b7JL L L L L L L L^!( !( !( !( !( !( !( !(H/ / / / / / / /&0 0 0 0 0 0 0 08Z Z Z Z Z Z Z Zzo' o' o' o' o' o' o' o'd& & & & & & & &+ + + + + + + +&n8 n8 n8 n8 n8 n8 n8 n8b> > >B7 B7 B7 B7 B7 B7 B7 B7J  *   ; ; ;; ; ;; ; ;; ; ;$ $ $$% % %P @&' '@ @	' '@B 	:BHV!        \\\229F F  32F2 2 2 G//00G>**', - -+ +- -+Q Q Q Q Qr6   